Javascript里做小数的乘法运算时会出现浮点错误,具体可以测试一下:
<script>
alert(11*22.9)
</script>
结果是251.89999999999998 而不是251.9,再试试:
<script>
alert(11*(22.9*10)/10)
</script>
好了,得到正确答案251.9。现在解决问题的大概思路就是,先把因数放大为整数,最后再除以相应的倍数,这样就能得到正确的结果了。代码如下:
<script defer>
Number.prototype.rate=function(){ //给数字对象添加自定义的rate方法
var oStr=this.toString() //将数字转成字符串
if(oStr.indexOf(".")==-1) //查找小数点,确定因数是否是小数
return 1 file://不是小数时返回1
else
return Math.pow(10,parseInt(oStr.length-oStr.indexOf(".")-1))//根据小数位,确定小数点向右移的位数
}
function tran(){
args=tran.arguments //参数的个数,也就是因数的个数
var temp=1
for(i=0;i<args.length;i++) //每个因数都转为整数再相乘
temp*=args[i]*args[i].rate()
for(i=0;i<args.length;i++) //相乘完后再除以所放大的倍数
temp/=args[i].rate()
return temp
}
alert(11*22.9+"\n"+tran(11,22.9)) //两种结果相比较
</script>
恩,按照你的方法成功解决乱码
@echo off都没有解释为什要有这个 还有后面的那个*。bat
怎么没有一个回首页的连接···[face09]
你是转载高手吗?
这是叠罗汉么? 随便就往上面放。。。。。 一点规律都没有就上面写了四类···· 哎 年轻人哪
里面的东西不能自动换行。看起来真郁闷。。[face12]
从别的地方转载的,你爱看就看,不爱看也没了[face62]
[face78] 太多了前面要先有个目录···· 累、
[face78]无聊! 注册了有什么用啊 应该还没有人注册····