2012-07-23 25 views
0

感謝您檢查此人。 我正在學習從PHP「PHP的初學者」的書,但找不出爲什麼我從下面的代碼得到錯誤的答案:請解釋PHP如何擴展%f dec。地方可以在printf()中返回錯誤的答案?

<?php 
$amt1=2.55; 
$amt2=3.55; 
$total= $amt1 + $amt2; 
echo'<br/>The total is $'. $total; 
printf('<br/>The total is %.21f', $total); 
?> 

我得到6.099999999999644729不6.1000 ...(試想一下,20個零) 使用Eclipse/XAMP/MAC OSX Lion計算機如何像這樣 - 或者(更可能)如何通過編寫更好的代碼來保持誠實?

回答

1

floatslimited precision。花車不能代表所有數字(2.55,3.556.10中的一個或多個不能精確表示)。在需要非常高或精確的精度的情況下,浮點數是錯誤的數據類型。你最好在這裏大概是round。 (在技術說明中,「浮點數的精度有限」有點不對,可能更準確的是「浮點數只能精確地表示的一些數字,有些數字不可能精確地用浮點數表示「)

+0

啊,是的,我現在遵循 - 謝謝。我也很欣賞鏈接。 – user1545488 2012-07-23 13:09:09

相關問題