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.
Wyobraźmy sobie na przykład, że A1 to 167,583:
int(A1)
dałoby 167, amod(A1,1)
dałoby 0,583.źródło
int(1.6) === 1
iint(-1.6) === -2
... Aletrunc(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:
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.
źródło
czy nie byłoby to po prostu idealne i estetyczne?
źródło