如何在JavaScript中精确地进行数字浮点运算?

时间:2019-03-30 17:54:14

标签: javascript floating-point precision floating-accuracy

我正在研究javascript文件中有关天文计算的人,所以我需要更高的精度。 我对每一行都有很多操作,我希望结果更精确(逗号后还要十或十进制)。

在JavaScript中,如果我不声明小数位数(例如,使用.ToFixed(n)),那么在计算逗号时,该逗号会考虑在逗号后的几个位置

例如:

var a= 1.123456789*3.5; // result 3.9320987615
var b= a/0.321;
var c= b*a;

// c => 48.16635722800571

会是结果吗? 就像对javascript的每个变量使用逗号后的所有小数一样,是近似值吗?

为什么用户在其他问题上建议使用decimal.js或其他库?

很抱歉,我的问题看起来很愚蠢,但对我来说很重要。 我希望你能帮助我。

对不起,我的英语!

2 个答案:

答案 0 :(得分:2)

Javascript使用IEEE-754双精度,这意味着它只计算约15个小数位的精度数字,这超出了上限。如果需要更高的精度,则必须使用decimal.js或其他类似的库。建议使用其他问题decimal.js或其他库是因为它易于放入程序中,并且可以提供所需的尽可能多的精度。

默认情况下未在计算机中实现它的原因是计算机要计算15位以上的20位数字需要花费更多的精力,因为计算机只能计算15位十进制数字。如果您想了解更多信息,建议您在Wikipedia上阅读Arbitrary Precision Arithmetic

答案 1 :(得分:-1)

仅因为toFixed()方法将数字转换为字符串,并保留指定的小数位数。因此,返回的值将是字符串而不是数字。