一个关于加法的问题!(请告诉我你们运行后的结果!)

yangzh 2002-03-23 03:42:59
在页面上运行下面的代码,在你的机器上得到的结果是多少,请告诉我!
<SCRIPT LANGUAGE=javascript>
<!--
var a,b,c,d
a=1.0;
b=0.9;
c=0.7;
d=a+b+c
alert(d)
//-->
</SCRIPT>

在我这里得到是:2.5999999999999996
但把d=a+b+c换成d=a+c+b得到结果是:2.6

这是为什么,请各位帮忙,谢谢!
...全文
82 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hax 2002-03-24
  • 打赏
  • 举报
回复
顺便说一句,应该跟cpu也没有关系。我这里是AMD Athlon。
hax 2002-03-24
  • 打赏
  • 举报
回复
确实如此。在IE 6.0、Mozilla 0.9.9、Opera 6.01上的结果都是相同的。这跟浮点数的二进制存储方式有关。
KiteGirl 2002-03-24
  • 打赏
  • 举报
回复
应该是浮点数的误差。我的解决办法是:根据你需要的精确小数位数N,将两数乘10^N次方,然后转换成整数运算,然后除10^N次方变回来。
sunbeamy 2002-03-23
  • 打赏
  • 举报
回复
不用太紧张啊,浮点数的运算就是会有这种结果
8988 2002-03-23
  • 打赏
  • 举报
回复
这个问题在很多编程语言中都会碰到,主要是计算浮点数时出现,一般用取整函数(ceil、floor)进行处理,也可以用输出格式符修正。

wd_318 2002-03-23
  • 打赏
  • 举报
回复
再用2.9,3.9,4.9,5.9加0.7试试吧,情况还会不同的,会出来个X.6000000000005?
yangzh 2002-03-23
  • 打赏
  • 举报
回复
为什么会这样,有什么理由吗?
wd_318 2002-03-23
  • 打赏
  • 举报
回复
傻了,我试过1.9+0.7也是2.5999999999999996

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧