我正在研究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
或其他库?
很抱歉,我的问题看起来很愚蠢,但对我来说很重要。 我希望你能帮助我。
对不起,我的英语!
答案 0 :(得分:2)
Javascript使用IEEE-754双精度,这意味着它只计算约15个小数位的精度数字,这超出了上限。如果需要更高的精度,则必须使用decimal.js
或其他类似的库。建议使用其他问题decimal.js
或其他库是因为它易于放入程序中,并且可以提供所需的尽可能多的精度。
默认情况下未在计算机中实现它的原因是计算机要计算15位以上的20位数字需要花费更多的精力,因为计算机只能计算15位十进制数字。如果您想了解更多信息,建议您在Wikipedia上阅读Arbitrary Precision Arithmetic。
答案 1 :(得分:-1)
仅因为toFixed()方法将数字转换为字符串,并保留指定的小数位数。因此,返回的值将是字符串而不是数字。