---
title: "Matematické funkce"
description: "Matematické funkce skriptu TapHome: MIN, MAX a AVG s ošetřením NaN a varianty STRICT, ABS, SIGN, SQRT, POWER, MOD, LOG, LN a DEWPOINT z teploty a vlhkosti."
url: "https://taphome.com/cs/docs/script/mathematical-functions/"
language: cs
lastmod: 2026-11-06
generator: hugo
ai:
  topics: ["mathematical-functions","aggregation","rounding","scripting-language"]
  questions: ["Jaký je rozdíl mezi funkcemi MIN a MINSTRICT?","Jak TapHome zachází s hodnotami NaN ve funkcích MIN, MAX a AVG?","Jak ve skriptu TapHome spočítat průměr hodnot?","Jak spočítat rosný bod z teploty a vlhkosti?","Jak ve skriptu TapHome umocnit číslo nebo získat zbytek po dělení?"]
---

# Matematické funkce

Matematické funkce skriptu TapHome — MIN, MAX, AVG a jejich varianty STRICT, ABS, SIGN, SQRT, POWER, MOD, LOG, LN a DEWPOINT.

Poslední aktualizace: 2026-11-06

Funkce pro agregaci hodnot a základní aritmetiku. `ROUND`, `CEIL`, `FLOOR`, `RAND` a `RANDINT` jsou na stránce [Zaokrouhlení a náhodná čísla](https://taphome.com/cs/docs/script/rounding-and-random/). Operátory jako `+`, `-`, `*` a `/` jsou na stránce [Operátory](https://taphome.com/cs/docs/script/operators/); operátor `%` ani `**` neexistuje — použijte `MOD` a `POWER`.

## MIN

`MIN` vrátí nejmenší ze zadaných hodnot a neznámé hodnoty (`Null` a `NaN`) přeskočí.

```text
MIN(value1, value2, ...)
MIN(collection)
```

**Parametry** — 1 až 100 hodnot, nebo právě jedna kolekce. Hodnoty nemusí být čísla, musí se ale dát vzájemně porovnat, například hodnoty `datetime`.

**Vrací** — nejmenší známou hodnotu. Když není známa žádná hodnota, výsledek je `NaN` (`Null`, když jsou všechny vstupy `Null`).

**Příklad**

```taphome
# neznámé hodnoty se přeskočí
MIN(40, 80, NaN);
# Result: 40
# funguje i kolekce
MIN({1, NaN, 3});
# Result: 1
# dvě hodnoty typu datetime
VAR d1 := DATETIME(2014, 12, 8, 0, 0, 0, 0, DateTimeKind.Utc);
VAR d2 := DATETIME(2015, 12, 8, 0, 0, 0, 0, DateTimeKind.Utc);
# dřívější ze dvou dat
MIN(d1, d2);
# Result: the value of d1
```

**Chyby** — *Collection is empty* u prázdné kolekce.

## MINSTRICT

`MINSTRICT` vrátí nejmenší ze zadaných hodnot, jakmile ale narazí na neznámou hodnotu (`Null` nebo `NaN`), vrátí místo toho ji — použijte ho, když jeden chybějící vstup musí zneplatnit celý výsledek.

```text
MINSTRICT(value1, value2, ...)
MINSTRICT(collection)
```

**Příklad**

```taphome
# všechny hodnoty jsou známé
MINSTRICT(40, 80);
# Result: 40
# NaN se vrátí tak, jak je
MINSTRICT(80, NaN);
# Result: NaN
# stejně pro kolekci
MINSTRICT({1, NaN, 3});
# Result: NaN
```

Argumenty a chyby jsou stejné jako u [MIN](https://taphome.com/cs/docs/script/mathematical-functions/#min).

## MAX

`MAX` vrátí největší ze zadaných hodnot a neznámé hodnoty (`Null` a `NaN`) přeskočí; přijímá stejné argumenty jako [MIN](https://taphome.com/cs/docs/script/mathematical-functions/#min).

```text
MAX(value1, value2, ...)
MAX(collection)
```

**Příklad**

```taphome
MAX(40, 80, NaN);
# Result: 80
MAX({1, NaN, 3});
# Result: 3
```

## MAXSTRICT

`MAXSTRICT` vrátí největší ze zadaných hodnot, nebo první neznámou hodnotu (`Null` nebo `NaN`), na kterou narazí.

```text
MAXSTRICT(value1, value2, ...)
MAXSTRICT(collection)
```

**Příklad**

```taphome
MAXSTRICT(2, 2, 6);
# Result: 6
MAXSTRICT({1, NaN, 3});
# Result: NaN
```

## AVG

`AVG` vrátí aritmetický průměr zadaných hodnot jako `double` a přeskočí `Null` a `NaN`.

```text
AVG(value1, value2, ...)
AVG(collection)
```

**Vrací** — `double`; `NaN`, když není známa žádná hodnota. Znaky se průměrují podle svých kódů, takže `AVG('a', 'c')` je číslo 98, ne znak `'b'`.

**Příklad**

```taphome
# NaN se přeskočí
AVG(40, 80, NaN);
# Result: 60
# průměr kolekce
AVG({1, NaN, 3});
# Result: 2
# kódy znaků 97 a 99
AVG('a', 'c');
# Result: 98
```

## AVGSTRICT

`AVGSTRICT` vrátí aritmetický průměr zadaných hodnot, nebo `NaN`, jakmile je některá z nich `NaN`.

```text
AVGSTRICT(value1, value2, ...)
AVGSTRICT(collection)
```

**Vrací** — `double`. Vstup `Null` je chyba za běhu, ne přeskočená hodnota.

**Příklad**

```taphome
AVGSTRICT(40, 80);
# Result: 60
AVGSTRICT(80, NaN);
# Result: NaN
```

## ABS

`ABS` vrátí absolutní hodnotu čísla jako `double`.

```taphome
ABS(-100);
# Result: 100
```

## SIGN

`SIGN` vrátí `-1` pro záporné číslo, `0` pro nulu a `1` pro kladné číslo, jako `int`.

```taphome
SIGN(-22.5);
# Result: -1
```

## SQRT

`SQRT` vrátí druhou odmocninu čísla, které je 0 nebo větší.

```taphome
SQRT(25);
# Result: 5
```

**Chyby** — *Argument for SQRT cannot be less than 0*.

## POWER

`POWER` umocní číslo na zadaný exponent; exponent smí být záporný nebo zlomek.

```text
POWER(number, exponent)
```

**Příklad**

```taphome
# 2 na třetí
POWER(2, 3);
# Result: 8
# záporný exponent
POWER(10, -3);
# Result: 0.001
# zlomkový exponent, odmocnina
POWER(25, 0.5);
# Result: 5
```

## MOD

`MOD` vrátí zbytek po dělení jednoho čísla druhým; funguje i s desetinnými čísly.

```text
MOD(dividend, divisor)
```

**Vrací** — `double` se znaménkem dělence, takže záporný dělenec dá záporný zbytek (na rozdíl od `MOD` v Excelu). Dělitel 0 dá `NaN`, ne chybu.

**Příklad**

```taphome
# celá čísla
MOD(6, 4);
# Result: 2
# desetinný dělitel
MOD(6, 2.5);
# Result: 1
# znaménko dělence
MOD(-7, 3);
# Result: -1
```

## LOG

`LOG` vrátí logaritmus kladného čísla o zadaném základu, nebo o základu 10, když základ chybí.

```text
LOG(number)
LOG(number, base)
```

**Příklad**

```taphome
LOG(100);
# Result: 2
LOG(4, 0.5);
# Result: -2
```

**Chyby** — *Arguments for LOG cannot be less or equal to 0*; *Second argument for LOG cannot be less or equal to 0 or 1*.

## LN

`LN` vrátí přirozený logaritmus (o základu e) kladného čísla.

```taphome
LN(100);
# Result: 4.605 (rounded)
```

**Chyby** — *Argument for LN cannot be less or equal to 0*.

## DEWPOINT

`DEWPOINT` vrátí rosný bod ve °C z teploty vzduchu ve °C a relativní vlhkosti zadané jako zlomek od 0 do 1 (0.5 znamená 50 %).

```text
DEWPOINT(temperature, relativeHumidity)
```

**Vrací** — `double`, vypočtený Magnusovým vzorcem ([rovnice](http://bmcnoldy.rsmas.miami.edu/Humidity.html)). Když argument vůbec není číslo (například `Null` nebo text), výsledek je `-40`.

**Příklad**

```taphome
DEWPOINT(20, 0.5);
# Result: 9.26 (rounded)
DEWPOINT(0, 1);
# Result: 0
```

> [!WARNING]
> Vlhkost zadávejte jako zlomek. `DEWPOINT(20, 50)` vrátí 103.17, nesmyslnou hodnotu, a to bez jakékoli chyby. Vlhkost v procentech, například surovou hodnotu přečtenou z registru Modbus, je nejprve nutné vydělit 100.
