今天做了几个PHP,过程中发现了几个比较搞笑的问题,serch Google, Baidu发现他们存在相同的问题,截图:


同样的,在PHP中 1.0-0.7-0.3 = 5.55111512313E-17 ,而且 1.0-0.8-0.2= -5.55111512 × 10-17, 1.0-0.9-0.1= -2.77555756 × 10-17也都是错误的,而1.0-0.6-0.4及以下是正确的。而且这种问题存在于 Java scrpt C perl甚至我PDA上安装的“科学计算器”。
笨蛋电脑!
其实原因理无非就是计算机使用二进制方式无法精确的表示浮点数。众所周知,电脑采用2的n次方分之一形式表示浮点数,0.3和0.7无法用二进制浮点数精确的表示。一来一去就造成了算错的问题。
解决方法其实也比较简单——四舍五入。
| anyShare分享到: | |
| |

#1 by airacle on 2007年05月8日 - 04:02
这个问题已经不存在了