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).
| |
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 d1Błę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.
| |
Przykład
MINSTRICT(40, 80);
# Result: 40
MINSTRICT(80, NaN);
# Result: NaN
MINSTRICT({1, NaN, 3});
# Result: NaNArgumenty 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.
| |
Przykład
MAX(40, 80, NaN);
# Result: 80
MAX({1, NaN, 3});
# Result: 3MAXSTRICT
MAXSTRICT zwraca największą z podanych wartości albo pierwszą napotkaną wartość nieznaną (Null lub NaN).
| |
Przykład
MAXSTRICT(2, 2, 6);
# Result: 6
MAXSTRICT({1, NaN, 3});
# Result: NaNAVG
AVG zwraca średnią arytmetyczną podanych wartości jako double i pomija Null i NaN.
| |
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: 98AVGSTRICT
AVGSTRICT zwraca średnią arytmetyczną podanych wartości albo NaN, gdy tylko jedna z nich jest NaN.
| |
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: NaNABS
ABS zwraca wartość bezwzględną liczby jako double.
ABS(-100);
# Result: 100SIGN
SIGN zwraca -1 dla liczby ujemnej, 0 dla zera i 1 dla liczby dodatniej, jako int.
SIGN(-22.5);
# Result: -1SQRT
SQRT zwraca pierwiastek kwadratowy liczby równej 0 lub większej.
SQRT(25);
# Result: 5Błę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.
| |
Przykład
POWER(2, 3);
# Result: 8
POWER(10, -3);
# Result: 0.001
POWER(25, 0.5);
# Result: 5MOD
MOD zwraca resztę z dzielenia jednej liczby przez drugą; działa też dla liczb dziesiętnych.
| |
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: -1LOG
LOG zwraca logarytm liczby dodatniej przy podanej podstawie albo przy podstawie 10, gdy podstawa zostanie pominięta.
| |
Przykład
LOG(100);
# Result: 2
LOG(4, 0.5);
# Result: -2Błę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 %).
| |
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: 0Wilgotność 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.