JS中的浮点运算问题
2013-01-25 08:59
218 查看
最近又遇到在前台进行浮点运算的问题,一开始从网上直接复制了一段浮点运算的代码,在测试中发现依然存在问题。
现在将修改过的代码贴出啦,与大家分享。
现在将修改过的代码贴出啦,与大家分享。
var FloatCalculate={ //浮点数运算 floatAdd:function(arg1,arg2){ //加法运行 var r1, r2, m; try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 } try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 } m = Math.pow(10, Math.max(r1, r2)); //return (arg1*m+arg2*m)/m return ((FloatCalculate.floatMul(arg1, m) + FloatCalculate.floatMul(arg2, m)) / m); }, floatSub:function(arg1,arg2){ //减法运行 var r1, r2, m, n; try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 } try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 } m = Math.pow(10, Math.max(r1, r2)); //动态控制精度长度 n = (r1 >= r2) ? r1 : r2; //return ((arg1*m-arg2*m)/m).toFixed(n); return ((FloatCalculate.floatMul(arg1, m) - FloatCalculate.floatMul(arg2, m)) / m).toFixed(n); }, floatMul:function(arg1,arg2){ //乘法运行 var m = 0, s1 = arg1.toString(), s2 = arg2.toString(); try { m += s1.split(".")[1].length } catch (e) { } try { m += s2.split(".")[1].length } catch (e) { } return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m); }, floatDiv:function(arg1,arg2){ //除法运行 var t1 = 0, t2 = 0, r1, r2; try { t1 = arg1.toString().split(".")[1].length } catch (e) { } try { t2 = arg2.toString().split(".")[1].length } catch (e) { } with (Math) { r1 = Number(arg1.toString().replace(".", "")); r2 = Number(arg2.toString().replace(".", "")); return FloatCalculate.floatMul((r1 / r2), pow(10, t2 - t1)); } } }
相关文章推荐
- js小数运算精度问题,js浮点数运算时出现精度问题
- js浮点数运算需要注意的问题
- js的浮点运算问题
- JS浮点类型运算精度丢失问题解决办法
- 奇怪的js问题(JavaScript浮点运算的问题) float类型相乘的有时候 会出现错误!! 注意!!!
- JS 浮点数四则运算精度丢失问题
- JS浮点类型运算精度丢失问题解决办法
- JS 浮点数四则运算精度丢失问题
- js浮点运算的问题
- js 浮点运算出现的精度丢失问题
- [导入]js 浮点运算表达式 精确计算(vb没有这个问题)
- js计算出现多位小数-Javascript 浮点运算问题分析与解决
- js处理浮点运算精度不正确的问题
- js浮点运算精度问题和IEEE754
- js 浮点数运算异常问题
- 浅析js中的浮点型运算问题
- 剖析js对浮点数运算精度问题
- 计算机中浮点数运算的问题
- 浮点运算潜在的结果不一致问题
- js浮点数计算问题 + 金额大写转换