PHP 浮点数相减的问题

2014-04-15 20:33:21 +08:00
 hellohacker
<?php
$d =2.99-1-1.99;
echo $d;
?>
输出结果 为什么不是 0 呢 ? 是 2.22044604925E-16

怎样才能输出0 呢?

我的做法是 每个数 乘以100 然后 运算完 除以 100
3738 次点击
所在节点    程序员
7 条回复
Ricepig
2014-04-15 20:35:13 +08:00
基础知识啊。。。

判断浮点数是不是等于0,不是用$d == 0,而是abs($d) < EPS,这个EPS是个很小的值。
young
2014-04-15 20:45:33 +08:00
基础知识啊。。。
你需要的是 php的bc math
http://www.php.net/manual/en/ref.bc.php
mahone3297
2014-04-15 20:49:04 +08:00
计算机的问题,跟php无关。。。
jsonline
2014-04-15 20:56:18 +08:00
楼主,计算机很傻的
zog
2014-04-15 21:10:46 +08:00
计算机存储都是2进制,十进制浮点数有时候无法完全对应二进制。所以经常会出现这种情况。
zog
2014-04-15 21:11:52 +08:00
python下控制台下输入2.3 + 2.4,结果是:4.69999999999999999
txlty
2014-04-15 21:16:10 +08:00
直接贴到地址栏:
javascript:alert(16.9*100);

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/108706

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX