Javascript中数字的精确浮点是如何工作的?

Javascript中数字的精确浮点是如何工作的?,javascript,floating-point,precision,floating-accuracy,Javascript,Floating Point,Precision,Floating Accuracy,大家好,我正在编写关于天文计算的javascript文件,所以我需要更高的精度。 我对每一行都有很多运算,我希望结果更精确(逗号后还有十或二十位小数) 在JavaScript中,如果我不声明十进制数(例如使用 .TopiTip(n)< /代码>),那么在逗号之后,有多少个位置,语言在计算过程中考虑? 例如: var a= 1.123456789*3.5; // result 3.9320987615 var b= a/0.321; var c= b*a; // c => 48.16635

大家好,我正在编写关于天文计算的
javascript
文件,所以我需要更高的精度。 我对每一行都有很多运算,我希望结果更精确(逗号后还有十或二十位小数)

在JavaScript中,如果我不声明十进制数(例如使用<代码> .TopiTip(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
或其他库

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


对不起我的英语

原因很简单,因为toFixed()方法将数字转换为字符串,保留指定数量的小数。因此,返回的值将是一个字符串而不是一个数字。

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


默认情况下,它没有在计算机中实现的原因是,计算机要计算到15位以上的20位数字需要付出更多的努力,因为计算机的构造只能计算到15位小数。如果你想了解更多,我建议你阅读维基百科

但是我应该对每个变量,每个数据,每个行使用这个方法吗?或者仅用于结果?换句话说:精度约为15位的类型是硬件支持的类型。任何更大的操作都无法通过可用的硬件支持完成,因此不仅更加困难(必须完全通过软件完成),而且速度也要慢得多。