---
title: "Funzioni matematiche"
description: "Funzioni matematiche degli script TapHome: MIN, MAX e AVG con gestione di NaN e varianti STRICT, ABS, SIGN, SQRT, POWER, MOD, LOG, LN e DEWPOINT da temperatura e umidità."
url: "https://taphome.com/it/docs/script/mathematical-functions/"
language: it
lastmod: 2026-11-06
generator: hugo
ai:
  topics: ["mathematical-functions","aggregation","rounding","scripting-language"]
  questions: ["Qual è la differenza tra le funzioni MIN e MINSTRICT?","Come gestisce TapHome i valori NaN in MIN, MAX e AVG?","Come si calcola la media di più valori in uno script TapHome?","Come si calcola il punto di rugiada da temperatura e umidità?","Come si eleva un numero a potenza o si ottiene un resto in uno script 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.

Ultimo aggiornamento: 2026-11-06

Funzioni per aggregare valori e per l'aritmetica di base. `ROUND`, `CEIL`, `FLOOR`, `RAND` e `RANDINT` sono nella pagina [Arrotondamento e numeri casuali](https://taphome.com/it/docs/script/rounding-and-random/). Gli operatori come `+`, `-`, `*` e `/` sono nella pagina [Operatori](https://taphome.com/it/docs/script/operators/); 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`).

```text
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**

```taphome
# i valori sconosciuti vengono saltati
MIN(40, 80, NaN);
# Result: 40
# funziona anche una collezione
MIN({1, NaN, 3});
# Result: 1
# due valori datetime
VAR d1 := DATETIME(2014, 12, 8, 0, 0, 0, 0, DateTimeKind.Utc);
VAR d2 := DATETIME(2015, 12, 8, 0, 0, 0, 0, DateTimeKind.Utc);
# la più anticipata delle due date
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.

```text
MINSTRICT(value1, value2, ...)
MINSTRICT(collection)
```

**Esempio**

```taphome
# tutti i valori sono noti
MINSTRICT(40, 80);
# Result: 40
# NaN viene restituito così com'è
MINSTRICT(80, NaN);
# Result: NaN
# lo stesso per una collezione
MINSTRICT({1, NaN, 3});
# Result: NaN
```

Gli argomenti e gli errori sono gli stessi di [MIN](https://taphome.com/it/docs/script/mathematical-functions/#min).

## MAX

`MAX` restituisce il più grande dei valori indicati e salta i valori sconosciuti (`Null` e `NaN`); accetta gli stessi argomenti di [MIN](https://taphome.com/it/docs/script/mathematical-functions/#min).

```text
MAX(value1, value2, ...)
MAX(collection)
```

**Esempio**

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

```text
MAXSTRICT(value1, value2, ...)
MAXSTRICT(collection)
```

**Esempio**

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

```text
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**

```taphome
# NaN viene saltato
AVG(40, 80, NaN);
# Result: 60
# media di una collezione
AVG({1, NaN, 3});
# Result: 2
# codici dei caratteri 97 e 99
AVG('a', 'c');
# Result: 98
```

## AVGSTRICT

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

```text
AVGSTRICT(value1, value2, ...)
AVGSTRICT(collection)
```

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

**Esempio**

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

## ABS

`ABS` restituisce il valore assoluto di un numero come `double`.

```taphome
ABS(-100);
# Result: 100
```

## SIGN

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

```taphome
SIGN(-22.5);
# Result: -1
```

## SQRT

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

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

```text
POWER(number, exponent)
```

**Esempio**

```taphome
# 2 alla terza
POWER(2, 3);
# Result: 8
# esponente negativo
POWER(10, -3);
# Result: 0.001
# esponente frazionario, radice quadrata
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.

```text
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**

```taphome
# numeri interi
MOD(6, 4);
# Result: 2
# divisore decimale
MOD(6, 2.5);
# Result: 1
# segno del dividendo
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.

```text
LOG(number)
LOG(number, base)
```

**Esempio**

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

```taphome
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 %).

```text
DEWPOINT(temperature, relativeHumidity)
```

**Valore restituito** — `double`, calcolato con la formula di Magnus ([equazione](http://bmcnoldy.rsmas.miami.edu/Humidity.html)). Quando un argomento non è affatto un numero (per esempio `Null` o testo), il risultato è `-40`.

**Esempio**

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

> [!WARNING]
> 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.
