为什么1.1*100=110.00000000000001 ? 我以前曾经两次回答过这个问题,楼主请看这个帖子http://community.csdn.net/Expert/topic/3439/3439985.xml?temp=.4362757 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 浮点数运算的时候,必须先转化为二进制。例如数字105.01转化为二进制后是一个无限循环小数1101001.00 <00001010001111010111> .......<>里面是循环节,有无限多个,在计算机存储的时候只能舍入。所以浮点数运算一般是近似的。只要小数点后面的位数不大,可以手工移动小数点转化为整数。虽然浮点数运算有误差,但一般误差极微,采用四舍五入也可 在有些情况下,没有这个问题,是因为: 有些时候转化正好不是无限循环小数,或者是因为误差极小,在计算机显示的时候舍入(计算机显示的时候也要舍入,一般内部运算位数大于显示位数)掉了 这种小概率事件,用的时间长了,哪种语言都会出现这种情况。除非有一种语言,运算位数和显示位数差距过大,这种误差总是在显示的时候被舍掉。 回复人: net_lover(孟子E章) ( ) 信誉:865 2005-01-07 08:01:00 得分: 0 脚本不适合做浮点运算的。 js子窗口父窗口问题 同事弄的一份对jquery的结构的罗列 怎么自动关闭模式窗体 为什么我的URL用document.URL显示出来的没有了querystring? 梅花雪树型控件,新页面,保持上个页面中,梅花雪控件父节点展开的状态,如何实现呢? 如何在onkeydown或者onkeypress中取到key的实际ascii? 帮小M看看这个问题怎么办啊? javascript脚本和css样式单是否有冲突? 有没有办法!动态控制打开窗口大小! 关于多个单选框的验证问题 怎么样生成一个层, IE最小化以后层还显示在屏幕(显示器)的右上角? 高分征高手解密下面代码!都进来看看吧
在有些情况下,没有这个问题,是因为:
有些时候转化正好不是无限循环小数,或者是因为误差极小,在计算机显示的时候舍入(计算机显示的时候也要舍入,一般内部运算位数大于显示位数)掉了
这种小概率事件,用的时间长了,哪种语言都会出现这种情况。除非有一种语言,运算位数和显示位数差距过大,这种误差总是在显示的时候被舍掉。
脚本不适合做浮点运算的。