Gdy liczba zmiennoprzecinkowa musi zostać obcięta do pewnej cyfry po punkcie zmiennoprzecinkowym, okazuje się, że nie jest to łatwe. Na przykład, jeśli obcięcie należy wykonać na drugą cyfrę po punkcie, liczby powinny być następujące:
45,8976 => 45,89, 0,0185 => 0,01
(druga cyfra po punkcie nie jest zaokrąglona zgodnie z trzecią cyfrą po punkcie).
Funkcje takie jak round(), number_format(), sprintf() okrągłej liczby i wydrukować
45,8976 => 45.90, 0,0185 => 0,02
Ucinanie liczb zmiennoprzecinkowych za pomocą PHP
Spotkałem dwa rozwiązania, a ja zastanawiałem się, czy są one dobre wystarczy i co jest lepsze do wykorzystania
1. function truncNumber($number, $prec = 2)
{
return bccomp($number, 0, 10) == 0 ? $number : round($number - pow(0.1, bcadd( $prec, 1)) * 5, $prec);
}
2. function truncNumber($number, $prec = 2)
{
return sprintf("%.".$prec."f", floor($number*pow(10, $prec))/pow(10, $prec));
}
cześć. skąd masz tę funkcję? czy oni pracowali poprawnie dla ciebie? którą wybrałeś i dlaczego? – arod