为什么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验证脚本帮忙解释下代表什么意思 如何使用js判断margin的auto属性? 菜鸟急求帮助!! 高手请进来,求JS一个函数的写法 基本还是早上那个问题:)如何结合java来做 请问如何将网页中的数据获取下来,保存到本地? 希望大侠出手相助!!! 求助:怎么获取中文的GB2312编码? 弱问:关于控制层的定位 请问这样的字如何写??? 怎么样生成一个层, IE最小化以后层还显示在屏幕(显示器)的右上角? 高分征高手解密下面代码!都进来看看吧
在有些情况下,没有这个问题,是因为:
有些时候转化正好不是无限循环小数,或者是因为误差极小,在计算机显示的时候舍入(计算机显示的时候也要舍入,一般内部运算位数大于显示位数)掉了
这种小概率事件,用的时间长了,哪种语言都会出现这种情况。除非有一种语言,运算位数和显示位数差距过大,这种误差总是在显示的时候被舍掉。
脚本不适合做浮点运算的。