Funzioni matematiche
Funzioni matematiche degli script TapHome — MIN, MAX, AVG e le loro varianti STRICT, ABS, SIGN, SQRT, POWER, MOD, LOG, LN e DEWPOINT.
Funzioni per aggregare valori e per l’aritmetica di base. ROUND, CEIL, FLOOR, RAND e RANDINT sono nella pagina Arrotondamento e numeri casuali. Gli operatori come +, -, * e / sono nella pagina Operatori; non esistono gli operatori % e ** — usa MOD e POWER.
MIN
MIN restituisce il più piccolo dei valori indicati e salta i valori sconosciuti (Null e NaN).
| |
Parametri — da 1 a 100 valori, oppure esattamente una collezione. I valori non devono essere per forza numeri, ma devono essere confrontabili tra loro, per esempio valori datetime.
Valore restituito — il valore noto più piccolo. Quando nessun valore è noto, il risultato è NaN (Null quando tutti gli ingressi sono Null).
Esempio
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 d1Errori — Collection is empty per una collezione vuota.
MINSTRICT
MINSTRICT restituisce il più piccolo dei valori indicati, ma non appena incontra un valore sconosciuto (Null o NaN) restituisce quel valore — usalo quando un solo ingresso mancante deve invalidare l’intero risultato.
| |
Esempio
MINSTRICT(40, 80);
# Result: 40
MINSTRICT(80, NaN);
# Result: NaN
MINSTRICT({1, NaN, 3});
# Result: NaNGli argomenti e gli errori sono gli stessi di MIN.
MAX
MAX restituisce il più grande dei valori indicati e salta i valori sconosciuti (Null e NaN); accetta gli stessi argomenti di MIN.
| |
Esempio
MAX(40, 80, NaN);
# Result: 80
MAX({1, NaN, 3});
# Result: 3MAXSTRICT
MAXSTRICT restituisce il più grande dei valori indicati, oppure il primo valore sconosciuto (Null o NaN) che incontra.
| |
Esempio
MAXSTRICT(2, 2, 6);
# Result: 6
MAXSTRICT({1, NaN, 3});
# Result: NaNAVG
AVG restituisce la media aritmetica dei valori indicati come double e salta Null e NaN.
| |
Valore restituito — double; NaN quando nessun valore è noto. Dei caratteri si calcola la media dei loro codici di carattere, quindi AVG('a', 'c') è il numero 98, non il carattere 'b'.
Esempio
AVG(40, 80, NaN);
# Result: 60
AVG({1, NaN, 3});
# Result: 2
AVG('a', 'c');
# Result: 98AVGSTRICT
AVGSTRICT restituisce la media aritmetica dei valori indicati, oppure NaN non appena uno di essi è NaN.
| |
Valore restituito — double. Un ingresso Null è un errore di esecuzione, non un valore saltato.
Esempio
AVGSTRICT(40, 80);
# Result: 60
AVGSTRICT(80, NaN);
# Result: NaNABS
ABS restituisce il valore assoluto di un numero come double.
ABS(-100);
# Result: 100SIGN
SIGN restituisce -1 per un numero negativo, 0 per lo zero e 1 per un numero positivo, come int.
SIGN(-22.5);
# Result: -1SQRT
SQRT restituisce la radice quadrata di un numero pari o maggiore di 0.
SQRT(25);
# Result: 5Errori — Argument for SQRT cannot be less than 0.
POWER
POWER eleva un numero all’esponente indicato; l’esponente può essere negativo o frazionario.
| |
Esempio
POWER(2, 3);
# Result: 8
POWER(10, -3);
# Result: 0.001
POWER(25, 0.5);
# Result: 5MOD
MOD restituisce il resto della divisione di un numero per un altro; funziona anche con i numeri decimali.
| |
Valore restituito — double con il segno del dividendo, quindi un dividendo negativo dà un resto negativo (a differenza di MOD in Excel). Un divisore pari a 0 dà NaN, non un errore.
Esempio
MOD(6, 4);
# Result: 2
MOD(6, 2.5);
# Result: 1
MOD(-7, 3);
# Result: -1LOG
LOG restituisce il logaritmo di un numero positivo nella base indicata, oppure in base 10 quando la base è omessa.
| |
Esempio
LOG(100);
# Result: 2
LOG(4, 0.5);
# Result: -2Errori — 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 restituisce il logaritmo naturale (in base e) di un numero positivo.
LN(100);
# Result: 4.605 (rounded)Errori — Argument for LN cannot be less or equal to 0.
DEWPOINT
DEWPOINT restituisce il punto di rugiada in °C a partire dalla temperatura dell’aria in °C e dall’umidità relativa indicata come frazione da 0 a 1 (0.5 significa 50 %).
| |
Valore restituito — double, calcolato con la formula di Magnus (equazione). Quando un argomento non è affatto un numero (per esempio Null o testo), il risultato è -40.
Esempio
DEWPOINT(20, 0.5);
# Result: 9.26 (rounded)
DEWPOINT(0, 1);
# Result: 0Indica l’umidità come frazione.
DEWPOINT(20, 50)restituisce 103.17, un valore privo di senso, senza alcun errore. Un’umidità in percentuale, per esempio un valore grezzo letto da un registro Modbus, va prima divisa per 100.