Tag: 乘法预览模式: 普通 | 列表

js乘法对小数点的处理

主题描述:JS[javascript/jscript]做小数乘法运算结果出现浮点错误的解决办法。

JS里做小数的乘法运算时会出现浮点错误,具体可以测试一下:

JavaScript代码
  1. alert(11*22.9)   

结果是251.89999999999998 而不是251.9。

一个简单的乘法运算,让我整了一个下午,主要是对JS不熟练。很是无奈。

解决问题的大概思路就是,先把因数放大为整数,最后再除以相应的倍数,这样就能得到正确的结果了。

下面的代码:

JavaScript代码
  1. //乘法,可小数  
  2. function accMul()  
  3. {  
  4. var m=0,s1=document.all.price.value.toString(),s2=document.all.amount.value.toString();  
  5. try{m+=s1.split(".")[1].length}catch(e){}  
  6. try{m+=s2.split(".")[1].length}catch(e){}  
  7. return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)  
  8. }  
  9.   
  10. Number.prototype.mul = function (arg){  
  11. return accMul(arg, this);  
  12. }  
  13.   
  14. function showresult(){  
  15.     document.all.moneys.value=accMul();  
  16. }  

查看更多...

Tags: js 乘法 运算 浮点数

分类:数据 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1523