2016-06-28 32 views
1

我有一個計算結果返回這個double:6.4971508379888。如果我將它投射到float並回顯它,它是相同的數字。我想顯示(不圓)只有兩個小數數,所以我嘗試:嘗試顯示帶有兩位小數的數字時number_format和sprintf的意外結果

number_format((float)$number, 2, '.', '') 

sprintf('%0.2f', (float)$number) 

但在這兩種情況下,我看到6.50,而不是6.49。這是爲什麼發生?如果你想那麼你的預期結果按照下面的代碼

回答

1

PHP自動一輪的價值基於給定精度

$precision = 2; 
$number = floor($number * pow(10,$precision))/pow(10,$precision); 
echo number_format((float)$number, $precision, '.', ''); 
+0

謝謝,這的確是我解決它的方法。我想知道爲什麼number_format和sprintf以這種方式工作。我剛剛發現number_format顯然輪了,但它沒有很好的記錄。不知道sprintf雖然? – magnetronnie

+0

@magnetronnie歡迎:-) –

相關問題