Matematické funkce
Matematické funkce skriptu TapHome — MIN, MAX, AVG a jejich varianty STRICT, ABS, SIGN, SQRT, POWER, MOD, LOG, LN a DEWPOINT.
Funkce pro agregaci hodnot a základní aritmetiku. ROUND, CEIL, FLOOR, RAND a RANDINT jsou na stránce Zaokrouhlení a náhodná čísla. Operátory jako +, -, * a / jsou na stránce Operátory; 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čí.
| |
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
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 d1Chyby — 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.
| |
Příklad
MINSTRICT(40, 80);
# Result: 40
MINSTRICT(80, NaN);
# Result: NaN
MINSTRICT({1, NaN, 3});
# Result: NaNArgumenty a chyby jsou stejné jako u 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.
| |
Příklad
MAX(40, 80, NaN);
# Result: 80
MAX({1, NaN, 3});
# Result: 3MAXSTRICT
MAXSTRICT vrátí největší ze zadaných hodnot, nebo první neznámou hodnotu (Null nebo NaN), na kterou narazí.
| |
Příklad
MAXSTRICT(2, 2, 6);
# Result: 6
MAXSTRICT({1, NaN, 3});
# Result: NaNAVG
AVG vrátí aritmetický průměr zadaných hodnot jako double a přeskočí Null a NaN.
| |
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
AVG(40, 80, NaN);
# Result: 60
AVG({1, NaN, 3});
# Result: 2
AVG('a', 'c');
# Result: 98AVGSTRICT
AVGSTRICT vrátí aritmetický průměr zadaných hodnot, nebo NaN, jakmile je některá z nich NaN.
| |
Vrací — double. Vstup Null je chyba za běhu, ne přeskočená hodnota.
Příklad
AVGSTRICT(40, 80);
# Result: 60
AVGSTRICT(80, NaN);
# Result: NaNABS
ABS vrátí absolutní hodnotu čísla jako double.
ABS(-100);
# Result: 100SIGN
SIGN vrátí -1 pro záporné číslo, 0 pro nulu a 1 pro kladné číslo, jako int.
SIGN(-22.5);
# Result: -1SQRT
SQRT vrátí druhou odmocninu čísla, které je 0 nebo větší.
SQRT(25);
# Result: 5Chyby — Argument for SQRT cannot be less than 0.
POWER
POWER umocní číslo na zadaný exponent; exponent smí být záporný nebo zlomek.
| |
Příklad
POWER(2, 3);
# Result: 8
POWER(10, -3);
# Result: 0.001
POWER(25, 0.5);
# Result: 5MOD
MOD vrátí zbytek po dělení jednoho čísla druhým; funguje i s desetinnými čísly.
| |
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
MOD(6, 4);
# Result: 2
MOD(6, 2.5);
# Result: 1
MOD(-7, 3);
# Result: -1LOG
LOG vrátí logaritmus kladného čísla o zadaném základu, nebo o základu 10, když základ chybí.
| |
Příklad
LOG(100);
# Result: 2
LOG(4, 0.5);
# Result: -2Chyby — 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.
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 %).
| |
Vrací — double, vypočtený Magnusovým vzorcem (rovnice). Když argument vůbec není číslo (například Null nebo text), výsledek je -40.
Příklad
DEWPOINT(20, 0.5);
# Result: 9.26 (rounded)
DEWPOINT(0, 1);
# Result: 0Vlhkost 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.