2012-05-03 16 views
5

Chcę przeliczyć wartość pływającą z 8 cyfr po zmiennoprzecinkowej na 2 cyfry po zmiennoprzecinkowej ..Chcę wyświetlić dokładnie 2 cyfry po zmiennoprzecinkowej

Np. $ a = 2.200000 ==> 2.20

Używam funkcji rundy php. Problem z rundą polega na tym, że jeśli mój numer to 2.200000, liczba ta zmieni się w 2.2. Chcę wyjść jako 2.20

Czy ktoś może sugerować możliwy sposób?

Rzeczywisty kod

$price = sprintf ("%.2f", round(($opt->price_value + ($opt->price_value * $this->row->prices[0]->taxes[0]->tax_rate)), 2)); 

chcę się położyć jak gdyby mój numer pływający jest 2,2000000. to powinno zwrócić mi 2,20. ale teraz to wraca mi 2,2

Odpowiedz

17

to robi to, co myślę, że prosisz o:

<?php 

$a = 2.20032324; 
$f = sprintf ("%.2f", $a); 
echo "$a rounded to 2 decimal places is '$f'\n"; 

$a = 2.2000000; 
$f = sprintf ("%.2f", $a); 
echo "$a rounded to 2 decimal places is '$f'\n"; 

wyników:

[[email protected] ~]$ php t.php 
2.20032324 rounded to 2 decimal places is '2.20' 
2.2 rounded to 2 decimal places is '2.20' 

I dodał dwa przypadki testowe

+0

się przyjść jeszcze nie wypada .. –

+0

powiem trochę kodu dla Ciebie .. –

+0

@SLAYER: Należy usunąć 'okrągłych()' operacje z obliczeń. Format '.2f' robi wszystko, co chcesz. – wallyk

-1

Spróbuj poniżej kod, możesz uzyskać swój wynik.

 $a = 2.200000; 
     echo number_format((float)$a,2,'.',''); 
-1

spróbować $val = round($a * 100)/100;

Powiązane problemy