最近工作中经常遇到需要处理浮点型计算的问题,开始一直都在用把浮点数先乘以10的对应小数的位数的次方化成整数再去开始计算。
例如100.01+100.02,可以化成(100.01*100+100.02*100)/100来做计算,但是最近发一个浮点数乘以一个10的次方也会有精度问题发生(如:575697.82*100),突然感觉前面的工作是不是有好多地方埋了很多坑啊,不能愉快的工作啦。
正好周未没什么别的计划,想研究下怎么处理JS的浮点型计算的精度问题
既然浮点数的计算精度有问题,那何不就在计算过程中绕过浮点型的计算了,于是有如下思路
这里是加减法的思路:
可以把数字强行转化成字符串,再取得二个值中小数位数长的那一个长度值,再用字符串的方法把二个字符串中的点号给替换掉,再把位数不够的那一个字符在未尾补零后再把二个字符串转化成数字再进行计算,再把计算的值转换成字符串补上小数点,再转换成数字输出,即绕过了浮点的加减法运算
代码如下:
//浮点数加减法 function sumfloat(num0,num1,bzstr){ var ln0=getPoi