js处理浮点运算精度不正确的问题
2015-08-21 00:00
811 查看
摘要: js处理浮点运算精度不正确的问题
在平时做前台js处理金额运算时经常遇到两个数相加得到结果与预想的值有所偏差
如:
104490.02+87480
我们预想值应该是191970.02,但是计算机运算出的结果是191970.02000000002,这样的结果造成我们程序中的数据产生偏差。
解决方法一:
function accAdd(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
}
解决方法二 :对运算结果做精度处理
/**
* @description:
*
* @param : {参数类型} src 要做处理的数据
* @param : {参数类型} pos 精度
* @return :
*
*/
function formatFloat(src, pos) {
return Math.round(src * Math.pow(10, pos)) / Math.pow(10, pos);
}
function accAdd(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))
formatFloat(arg1*arg2, m);
}
在平时做前台js处理金额运算时经常遇到两个数相加得到结果与预想的值有所偏差
如:
104490.02+87480
我们预想值应该是191970.02,但是计算机运算出的结果是191970.02000000002,这样的结果造成我们程序中的数据产生偏差。
解决方法一:
function accAdd(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
}
解决方法二 :对运算结果做精度处理
/**
* @description:
*
* @param : {参数类型} src 要做处理的数据
* @param : {参数类型} pos 精度
* @return :
*
*/
function formatFloat(src, pos) {
return Math.round(src * Math.pow(10, pos)) / Math.pow(10, pos);
}
function accAdd(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))
formatFloat(arg1*arg2, m);
}
相关文章推荐
- js 中 ownerDocument与documentElement的区别
- 测试javascript继承
- js获取图片高度是 要注意图片是否已经加载完毕
- Jsoup Post 登陆搜外论坛并获取Cookies 2015-08-21
- javascript开发与调试方法
- js: 实现Select的option上下移动
- javascript中event.keycode大全
- jsp:include标签
- JavaScript运算符
- js图片延迟加载
- 怎么在div中创建子元素,删除子元素,删除所有的子元素
- 奔跑吧,我的JavaScript(1)
- JavaScript--点击按钮实现选中选项移动到指定位置(下拉框)或全部选项移动
- json、js数组真心不是想得那么简单
- JavaScript--点击按钮实现复选框全选和反选功能
- JavaScript+CSS实现图片动态轮播dynamic_slider
- JavaScript--简单实现按回车键,光标跳转到后一文本框中和表单提交
- JavaScript 编程
- 【JavaScript】---AJAX
- event