TapHome

Matematické funkcie

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

Funkcie na agregáciu hodnôt a základnú aritmetiku. ROUND, CEIL, FLOOR, RAND a RANDINT sú na stránke Zaokrúhľovanie a náhodné čísla. Operátory ako +, -, * a / sú na stránke Operátory; operátor % ani ** neexistuje — použite MOD a POWER.

MIN

MIN vráti najmenšiu zo zadaných hodnôt a neznáme hodnoty (Null a NaN) preskočí.

1
2
MIN(value1, value2, ...)
MIN(collection)

Parametre — 1 až 100 hodnôt alebo presne jedna kolekcia. Hodnoty nemusia byť čísla, ale musia byť navzájom porovnateľné, napríklad hodnoty datetime.

Návratová hodnota — najmenšia známa hodnota. Keď nie je známa žiadna hodnota, výsledok je NaN (Null, keď sú všetky vstupy Null).

Príklad

MIN(40, 80, NaN);
# Result: 40
MIN({1, NaN, 3});
# Result: 1
VAR d1 := DATETIME(2014, 12, 8, 0, 0, 0, 0, DateTimeKind.Utc);
VAR d2 := DATETIME(2015, 12, 8, 0, 0, 0, 0, DateTimeKind.Utc);
MIN(d1, d2);
# Result: the value of d1

Chyby — Collection is empty pri prázdnej kolekcii.

MINSTRICT

MINSTRICT vráti najmenšiu zo zadaných hodnôt, ale hneď ako narazí na neznámu hodnotu (Null alebo NaN), vráti namiesto výsledku túto hodnotu — použite ju, keď jeden chýbajúci vstup musí zneplatniť celý výsledok.

1
2
MINSTRICT(value1, value2, ...)
MINSTRICT(collection)

Príklad

MINSTRICT(40, 80);
# Result: 40
MINSTRICT(80, NaN);
# Result: NaN
MINSTRICT({1, NaN, 3});
# Result: NaN

Argumenty a chyby sú rovnaké ako pri MIN.

MAX

MAX vráti najväčšiu zo zadaných hodnôt a neznáme hodnoty (Null a NaN) preskočí; prijíma rovnaké argumenty ako MIN.

1
2
MAX(value1, value2, ...)
MAX(collection)

Príklad

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

MAXSTRICT

MAXSTRICT vráti najväčšiu zo zadaných hodnôt alebo prvú neznámu hodnotu (Null alebo NaN), na ktorú narazí.

1
2
MAXSTRICT(value1, value2, ...)
MAXSTRICT(collection)

Príklad

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

AVG

AVG vráti aritmetický priemer zadaných hodnôt ako double a preskočí Null a NaN.

1
2
AVG(value1, value2, ...)
AVG(collection)

Návratová hodnota — double; NaN, keď nie je známa žiadna hodnota. Znaky sa priemerujú podľa svojich kódov, preto AVG('a', 'c') je číslo 98, nie znak 'b'.

Príklad

AVG(40, 80, NaN);
# Result: 60
AVG({1, NaN, 3});
# Result: 2
AVG('a', 'c');
# Result: 98

AVGSTRICT

AVGSTRICT vráti aritmetický priemer zadaných hodnôt, alebo NaN, hneď ako je niektorá z nich NaN.

1
2
AVGSTRICT(value1, value2, ...)
AVGSTRICT(collection)

Návratová hodnota — double. Vstup Null je chyba pri vykonávaní, nie preskočená hodnota.

Príklad

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

ABS

ABS vráti absolútnu hodnotu čísla ako double.

ABS(-100);
# Result: 100

SIGN

SIGN vráti -1 pre záporné číslo, 0 pre nulu a 1 pre kladné číslo, a to ako int.

SIGN(-22.5);
# Result: -1

SQRT

SQRT vráti druhú odmocninu čísla, ktoré je 0 alebo väčšie.

SQRT(25);
# Result: 5

Chyby — Argument for SQRT cannot be less than 0.

POWER

POWER umocní číslo na zadaný exponent; exponent môže byť záporný aj necelý.

1
POWER(number, exponent)

Príklad

POWER(2, 3);
# Result: 8
POWER(10, -3);
# Result: 0.001
POWER(25, 0.5);
# Result: 5

MOD

MOD vráti zvyšok po delení jedného čísla druhým; funguje aj s desatinnými číslami.

1
MOD(dividend, divisor)

Návratová hodnota — double so znamienkom delenca, takže záporný delenec dá záporný zvyšok (na rozdiel od MOD v Exceli). Deliteľ 0 dá NaN, nie chybu.

Príklad

MOD(6, 4);
# Result: 2
MOD(6, 2.5);
# Result: 1
MOD(-7, 3);
# Result: -1

LOG

LOG vráti logaritmus kladného čísla so zadaným základom, alebo so základom 10, keď sa základ vynechá.

1
2
LOG(number)
LOG(number, base)

Príklad

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áti prirodzený logaritmus (so základom e) kladného čísla.

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

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

DEWPOINT

DEWPOINT vráti rosný bod v °C z teploty vzduchu v °C a relatívnej vlhkosti zadanej ako podiel od 0 do 1 (0.5 znamená 50 %).

1
DEWPOINT(temperature, relativeHumidity)

Návratová hodnota — double, vypočítaná Magnusovým vzorcom (rovnica). Keď argument vôbec nie je číslo (napríklad Null alebo text), výsledok je -40.

Príklad

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

Vlhkosť zadajte ako podiel. DEWPOINT(20, 50) vráti 103.17, teda nezmyselnú hodnotu, a to bez akejkoľvek chyby. Vlhkosť v percentách, napríklad surovú hodnotu prečítanú z registra Modbus, treba najprv vydeliť 100.