首页 > 解决方案 > Javascript中数字的精度浮点数如何工作?

问题描述

大家好,我正在处理有关天文计算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或其他库?

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

对不起我的英语不好 !

标签: javascriptfloating-pointprecisionfloating-accuracy

解决方案


Javascript 使用 IEEE-754 双精度,这意味着它只计算大约 15 位小数精度的数字,而不是被截断。如果您需要更高的精度,则必须使用decimal.js或其他类似的库。其他问题推荐decimal.js或其他库是因为它很容易放入您的程序中,并且可以提供您想要的尽可能多的精度。

默认情况下未在计算机中实现它的原因是计算机计算到 20 位而不是 15 位需要更多的努力,因为计算机被构建为仅计算到 15 位十进制数字。如果您想了解更多信息,我建议您阅读Wikipedia 上的任意精度算术


推荐阅读