2012-07-23 27 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

相关问题