TapHome

Funcții matematice

Funcțiile matematice ale scripturilor TapHome — MIN, MAX, AVG și variantele lor STRICT, ABS, SIGN, SQRT, POWER, MOD, LOG, LN și DEWPOINT.

Funcții pentru agregarea valorilor și pentru aritmetica de bază. ROUND, CEIL, FLOOR, RAND și RANDINT se găsesc pe pagina Rotunjire și numere aleatoare. Operatori precum +, -, * și / se găsesc pe pagina Operatori; nu există operatorii % sau ** — în locul lor se folosesc MOD și POWER.

MIN

MIN returnează cea mai mică dintre valorile date și omite valorile necunoscute (Null și NaN).

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

Parametri — între 1 și 100 de valori sau exact o colecție. Valorile nu trebuie să fie numere, dar trebuie să fie comparabile între ele, de exemplu valori datetime.

Returnează — cea mai mică valoare cunoscută. Când nicio valoare nu este cunoscută, rezultatul este NaN (Null când toate intrările sunt Null).

Exemplu

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

Erori — Collection is empty pentru o colecție goală.

MINSTRICT

MINSTRICT returnează cea mai mică dintre valorile date, dar imediat ce întâlnește o valoare necunoscută (Null sau NaN) returnează în schimb acea valoare — se folosește când o singură intrare lipsă trebuie să invalideze întregul rezultat.

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

Exemplu

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

Argumentele și erorile sunt aceleași ca la MIN.

MAX

MAX returnează cea mai mare dintre valorile date și omite valorile necunoscute (Null și NaN); acceptă aceleași argumente ca MIN.

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

Exemplu

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

MAXSTRICT

MAXSTRICT returnează cea mai mare dintre valorile date sau prima valoare necunoscută (Null ori NaN) pe care o întâlnește.

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

Exemplu

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

AVG

AVG returnează media aritmetică a valorilor date ca double și omite Null și NaN.

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

Returnează — double; NaN când nicio valoare nu este cunoscută. Caracterele se mediază după codurile lor, deci AVG('a', 'c') este numărul 98, nu caracterul 'b'.

Exemplu

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

AVGSTRICT

AVGSTRICT returnează media aritmetică a valorilor date sau NaN imediat ce una dintre ele este NaN.

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

Returnează — double. O intrare Null produce o eroare la rulare, nu este o valoare omisă.

Exemplu

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

ABS

ABS returnează valoarea absolută a unui număr ca double.

ABS(-100);
# Result: 100

SIGN

SIGN returnează -1 pentru un număr negativ, 0 pentru zero și 1 pentru un număr pozitiv, ca int.

SIGN(-22.5);
# Result: -1

SQRT

SQRT returnează rădăcina pătrată a unui număr egal cu 0 sau mai mare.

SQRT(25);
# Result: 5

Erori — Argument for SQRT cannot be less than 0.

POWER

POWER ridică un număr la exponentul dat; exponentul poate fi negativ sau fracționar.

1
POWER(number, exponent)

Exemplu

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

MOD

MOD returnează restul împărțirii unui număr la altul; funcționează și cu numere zecimale.

1
MOD(dividend, divisor)

Returnează — double cu semnul deîmpărțitului, deci un deîmpărțit negativ dă un rest negativ (spre deosebire de MOD din Excel). Un împărțitor 0 dă NaN, nu o eroare.

Exemplu

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

LOG

LOG returnează logaritmul unui număr pozitiv în baza dată sau în baza 10 când baza este omisă.

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

Exemplu

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

Erori — 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 returnează logaritmul natural (baza e) al unui număr pozitiv.

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

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

DEWPOINT

DEWPOINT returnează punctul de rouă în °C din temperatura aerului în °C și umiditatea relativă dată ca fracție de la 0 la 1 (0.5 înseamnă 50 %).

1
DEWPOINT(temperature, relativeHumidity)

Returnează — double, calculat cu formula Magnus (ecuația). Când un argument nu este deloc număr (de exemplu Null sau text), rezultatul este -40.

Exemplu

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

Umiditatea se transmite ca fracție. DEWPOINT(20, 50) returnează 103.17, o valoare fără sens, fără nicio eroare. O umiditate în procente, de exemplu o valoare brută citită dintr-un registru Modbus, trebuie împărțită mai întâi la 100.