TapHome

Funkcje matematyczne

Funkcje matematyczne w skryptach TapHome — MIN, MAX, AVG i ich warianty STRICT, ABS, SIGN, SQRT, POWER, MOD, LOG, LN i DEWPOINT.

Funkcje do agregacji wartości i podstawowej arytmetyki. ROUND, CEIL, FLOOR, RAND i RANDINT są na stronie Zaokrąglanie i liczby losowe. Operatory takie jak +, -, * i / są na stronie Operatory; nie ma operatora % ani ** — użyj MOD i POWER.

MIN

MIN zwraca najmniejszą z podanych wartości i pomija wartości nieznane (Null i NaN).

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

Parametry — od 1 do 100 wartości albo dokładnie jedna kolekcja. Wartości nie muszą być liczbami, ale muszą być ze sobą porównywalne, na przykład wartości datetime.

Zwraca — najmniejszą znaną wartość. Gdy żadna wartość nie jest znana, wynikiem jest NaN (Null, gdy każde wejście jest Null).

Przykład

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

Błędy — Collection is empty dla pustej kolekcji.

MINSTRICT

MINSTRICT zwraca najmniejszą z podanych wartości, ale gdy tylko napotka wartość nieznaną (Null lub NaN), zwraca zamiast niej tę wartość — używaj jej, gdy jedno brakujące wejście ma unieważnić cały wynik.

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

Przykład

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

Argumenty i błędy są takie same jak dla MIN.

MAX

MAX zwraca największą z podanych wartości i pomija wartości nieznane (Null i NaN); przyjmuje te same argumenty co MIN.

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

Przykład

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

MAXSTRICT

MAXSTRICT zwraca największą z podanych wartości albo pierwszą napotkaną wartość nieznaną (Null lub NaN).

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

Przykład

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

AVG

AVG zwraca średnią arytmetyczną podanych wartości jako double i pomija Null i NaN.

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

Zwraca — double; NaN, gdy żadna wartość nie jest znana. Znaki są uśredniane według kodów znaków, więc AVG('a', 'c') daje liczbę 98, a nie znak 'b'.

Przykład

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

AVGSTRICT

AVGSTRICT zwraca średnią arytmetyczną podanych wartości albo NaN, gdy tylko jedna z nich jest NaN.

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

Zwraca — double. Wejście Null to błąd wykonania, a nie pominięta wartość.

Przykład

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

ABS

ABS zwraca wartość bezwzględną liczby jako double.

ABS(-100);
# Result: 100

SIGN

SIGN zwraca -1 dla liczby ujemnej, 0 dla zera i 1 dla liczby dodatniej, jako int.

SIGN(-22.5);
# Result: -1

SQRT

SQRT zwraca pierwiastek kwadratowy liczby równej 0 lub większej.

SQRT(25);
# Result: 5

Błędy — Argument for SQRT cannot be less than 0.

POWER

POWER podnosi liczbę do podanego wykładnika; wykładnik może być ujemny lub ułamkowy.

1
POWER(number, exponent)

Przykład

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

MOD

MOD zwraca resztę z dzielenia jednej liczby przez drugą; działa też dla liczb dziesiętnych.

1
MOD(dividend, divisor)

Zwraca — double ze znakiem dzielnej, więc ujemna dzielna daje ujemną resztę (inaczej niż MOD w Excelu). Dzielnik 0 daje NaN, a nie błąd.

Przykład

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

LOG

LOG zwraca logarytm liczby dodatniej przy podanej podstawie albo przy podstawie 10, gdy podstawa zostanie pominięta.

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

Przykład

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

Błędy — 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 zwraca logarytm naturalny (o podstawie e) liczby dodatniej.

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

Błędy — Argument for LN cannot be less or equal to 0.

DEWPOINT

DEWPOINT zwraca punkt rosy w °C na podstawie temperatury powietrza w °C i wilgotności względnej podanej jako ułamek od 0 do 1 (0.5 oznacza 50 %).

1
DEWPOINT(temperature, relativeHumidity)

Zwraca — double, obliczany wzorem Magnusa (równanie). Gdy argument w ogóle nie jest liczbą (na przykład Null lub tekst), wynikiem jest -40.

Przykład

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

Wilgotność podawaj jako ułamek. DEWPOINT(20, 50) zwraca 103.17, wartość bez sensu, bez żadnego błędu. Wilgotność w procentach, na przykład surową wartość odczytaną z rejestru Modbus, trzeba najpierw podzielić przez 100.