Odpowiedzi:
TRUNC()
jest przeznaczony do usuwania części dziesiętnej dowolnej liczby natychmiast i bez żadnych modyfikacji części dziesiętnej.
Tak więc, zgodnie z odpowiedzią LinYana , wystarczy użyć:
TRUNC(A1)
aby uzyskać całkowitą część wartości w A1
A1-TRUNC(A1)
aby otrzymać ułamkową część wartości w A1
W przeciwieństwie FLOOR()
, TRUNC()
działa na obu liczb dodatnich i ujemnych, bez konieczności regulacji, i działa w taki sam sposób, zarówno w programie Microsoft Excel i LibreOffice.
FLOOR()
wymaga, aby parametr istotności miał ten sam znak co przetwarzana liczba (w przeciwnym razie spowoduje błąd), więc 1
na końcu trzeba by zmienić, -1
aby przetwarzać liczby ujemne, lub można wstawić SIGN()
i niepotrzebnie skomplikować formułę.
A w OpenOffice i LibreOffice FLOOR()
ma również dodatkowy (w porównaniu do Excela) trzeci parametr „trybu”, który zmienia wyniki zwracane przez funkcję dla liczb ujemnych.
możesz wypróbować FLOOR
funkcję, floor(A1,1)
dla części całkowitej A1, A1-floor(A1,1)
dla części dziesiętnej A1.
Wyobraźmy sobie na przykład, że A1 to 167,583:
int(A1)
dałoby 167, a
mod(A1,1)
dałoby 0,583.
int(1.6) === 1
i int(-1.6) === -2
... Ale trunc(decimal;0)
działa poprawnie dla obu.
Nie myśl, że jest do tego specjalna funkcja, jednak zagnieżdżając parę, możesz.
Zakładając, że próbujesz zwrócić wartość po przecinku dla komórki A1, formuła wyglądałaby następująco:
=MID(A1,SEARCH(".",A1,1)+1,LEN(A1))
Efektywnie używasz funkcji MID, aby zwrócić pewną liczbę znaków, zaczynając od przecinka. Wszystkie 3 odniesienia do A1 muszą zostać zaktualizowane dla każdej docelowej komórki, aby działała poprawnie.
=RIGHT(TEXT(ABS(A1)-INT(ABS(A1));",00");2)
czy nie byłoby to po prostu idealne i estetyczne?