TapHome

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čí.

1
2
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

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 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.

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

Příklad

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

Argumenty 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.

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

Příklad

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í.

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

Příklad

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.

1
2
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

AVG(40, 80, NaN);
# Result: 60
AVG({1, NaN, 3});
# Result: 2
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.

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

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: NaN

ABS

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

ABS(-100);
# Result: 100

SIGN

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

SIGN(-22.5);
# Result: -1

SQRT

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

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.

1
POWER(number, exponent)

Příklad

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

MOD

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

1
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

MOD(6, 4);
# Result: 2
MOD(6, 2.5);
# Result: 1
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í.

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

Pří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á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 %).

1
DEWPOINT(temperature, relativeHumidity)

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: 0

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.