TapHome

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

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

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 d1

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

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

Esempio

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

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

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

Esempio

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

MAXSTRICT

MAXSTRICT restituisce il più grande dei valori indicati, oppure il primo valore sconosciuto (Null o NaN) che incontra.

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

Esempio

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

AVG

AVG restituisce la media aritmetica dei valori indicati come double e salta Null e NaN.

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

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

AVGSTRICT

AVGSTRICT restituisce la media aritmetica dei valori indicati, oppure NaN non appena uno di essi è NaN.

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

Valore restituito — double. Un ingresso Null è un errore di esecuzione, non un valore saltato.

Esempio

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

ABS

ABS restituisce il valore assoluto di un numero come double.

ABS(-100);
# Result: 100

SIGN

SIGN restituisce -1 per un numero negativo, 0 per lo zero e 1 per un numero positivo, come int.

SIGN(-22.5);
# Result: -1

SQRT

SQRT restituisce la radice quadrata di un numero pari o maggiore di 0.

SQRT(25);
# Result: 5

Errori — Argument for SQRT cannot be less than 0.

POWER

POWER eleva un numero all’esponente indicato; l’esponente può essere negativo o frazionario.

1
POWER(number, exponent)

Esempio

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

MOD

MOD restituisce il resto della divisione di un numero per un altro; funziona anche con i numeri decimali.

1
MOD(dividend, divisor)

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

LOG

LOG restituisce il logaritmo di un numero positivo nella base indicata, oppure in base 10 quando la base è omessa.

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

Esempio

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

Errori — 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 %).

1
DEWPOINT(temperature, relativeHumidity)

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

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