为什么JavaScript中存在安全整数的概念?
在我的chrome inspector控制台上,我观察到本地javascript中有一些奇怪的东西。例如,我运行了这个为什么JavaScript中存在安全整数的概念?,javascript,Javascript,在我的chrome inspector控制台上,我观察到本地javascript中有一些奇怪的东西。例如,我运行了这个 var a=10208629303283853; var b=10208629303283855; 控制台日志(a); 控制台日志(b) 结果是什么 10208629303283852 10208629303283856 为什么在价值上存在差异。在谷歌上,我发现上面的数字超出了安全限制(请参阅下面的链接)。这可能会导致其行为异常。为什么会有这样的概念?为什么var允许我们首先存
var a=10208629303283853;
var b=10208629303283855;
控制台日志(a);
控制台日志(b)代码>
结果是什么
10208629303283852
10208629303283856
为什么在价值上存在差异。在谷歌上,我发现上面的数字超出了安全限制(请参阅下面的链接)。这可能会导致其行为异常。为什么会有这样的概念?为什么var允许我们首先存储大量数据
Source--在浮点数中,它更像是一个安全的整数概念,但它是存在的,因为存在一个安全的整数范围-为什么var允许我们首先存储大数
因为64位浮点允许更大的数字,所以答案在您链接的文章中:JavaScript使用IEEE 754中指定的双精度浮点格式数字。标准旨在跨不同平台和环境(包括数据交换)提供可靠和一致的性能。这不仅仅是ECMAScript的问题。如果你想知道为什么存在MAX_SAFE_INTEGER,那么(可能)你可以很容易地测试值是否超过它并决定怎么做,而不必记住它是9007199254740991
,并将较大的值设置为Number.POSITIVE_INFINITY或NaN或其他任何值。它在浮点数中更像是一个安全的整数概念,但它是存在的,因为,有一个安全的整数范围-为什么var允许我们首先存储大的数字
因为64位浮点允许更大的数字,所以答案在您链接的文章中:JavaScript使用IEEE 754中指定的双精度浮点格式数字。标准旨在跨不同平台和环境(包括数据交换)提供可靠和一致的性能。这不仅仅是ECMAScript的问题。如果您想知道为什么存在MAX_SAFE_INTEGER,那么(可能)您可以很容易地测试值是否超过它并决定要做什么,而不必记住它是9007199254740991
并将较大的值设置为Number.POSITIVE_INFINITY或NaN或其他任何值。