javascript string 转float 精度问题

发布网友 发布时间:2022-04-27 03:32

我来回答

1个回答

热心网友 时间:2022-04-07 11:11

我现在从网上能查到的说法有两种:

第一种说是JS浮点数计算的bug

第二种说是和计算机最终转换成二进制计算有关系, 

但是为什么不是所有小数都会有这种现象, 目前我也不清楚, 有机会再去深入研究一下。


解决办法,到是也有两种:

 第一种就是利用JS .toFixed(n) 方法, 直接获取n位小数, 个人觉得这种方法在数据精度上会有一些问题. 如果数据精度要求不高的话 可以使用。

第二种方法就是自己写js 运算方法.

以下是自定义加法函数, 使用此方法进行相加会避免上面问题。

function addNum(num1,num2){
var sq1,sq2,m;
try{sq1=num1.toString().split(".")[1].length;} catch(e){sq1=0;}
try{sq2=num2.toString().split(".")[1].length;} catch(e){sq2=0;}
m=Math.pow(10,Math.max(sq1,sq2));
return ( num1 * m + num2 * m ) / m;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com