0

感谢您检查这个人。我正在从“PHP for Absolute Beginners”一书中学习 PHP,但无法弄清楚为什么我从下面的代码中得到了错误的答案:

<?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 计算机怎么会像那样撒谎——或者(更有可能)我如何通过编写更好的代码来保持诚实?

4

1 回答 1

1

浮点数精度有限。floats 不能表示所有数字(一个或多个2.553.556.10不能精确表示)。在需要非常高或精确精度的情况下,浮点数是错误的数据类型。你最好的赌注可能是圆形的。

(在技术说明上,“浮点数的精度有限”有点错误。可能更准确的是“浮点数只能准确地表示某些数字。有些数字不可能用浮点数精确地表示。”)

于 2012-07-23T10:20:54.387 回答