PHP技术,PHP研究及学习,Python学习,人工智能,大数据服务

PHP+Python » 前端设计 » js计算精度解决办法

js计算精度解决办法

此文被围观1937日期: 2011-04-14 分类 : 前端设计  标签:  ··

js计算精度解决办法,这个问题一般出在计算产品数量和价格的和,如果是integer类型那么就会出现小数位不在计算内!所以要改成float类型 提供一个js类 // JavaScript Document function arithmetic(a, sign, b){ if(isNaN(a) || isNaN(b)) return ;if (a == null || a == '') a = 0; if (b == null || b == '') b = 0; if(a.toString().indexOf(".") < 0 && b.toString().indexOf(".") < 0) return eval(a + sign + b); var ra = a.toString().replace(' ', ''); var rb = b.toString().replace(' ', ''); var arr_a = ra.split("."); var arr_b = rb.split("."); var digit_a = (arr_a.length > 1) ? arr_a[1].length : 0; var digit_b = (arr_b.length > 1) ? arr_b[1].length : 0; var size = (digit_a > digit_b ? digit_a : digit_b); var tmp_a = ra.replace('.', ''); var tmp_b = rb.replace('.', ''); var int_a; var int_b; if(size == digit_a) int_a = Number(tmp_a); else for(var i = 0; i < (size - digit_a); i++) { tmp_a += '0'; } int_a = Number(tmp_a);} if(size == digit_b) int_b = Number(tmp_b); else{ for(var i = 0; i < (size - digit_b); i++) { tmp_b += '0'; } int_b = Number(tmp_b); } var mul; switch(sign){ case "+": mul = size; break; case "-": mul = size; break; case "*": mul = 2 * size; break; } if (sign == '/') var int_result = eval(int_a + sign + int_b); else var int_result = eval(int_a + sign + int_b) / Math.pow(10, mul); return (int_result); } //var result = arithmetic(10,'/',2);//计算10除以2 注意一点就是获取值的时候用不着parseFloat不要用parseInt.

roFixed(x)是定小数点后位数的方法,一定程度上是有作用的,建议加上

本站使用ThinkPHP框架开发读图网主题,目前托管在阿里云,图片由读图网提供. 蜀ICP备12031064号

Copyright © 2011-2018adophper.com All Rights Reserved.