Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么JavaScript中存在安全整数的概念?_Javascript - Fatal编程技术网

为什么JavaScript中存在安全整数的概念?

为什么JavaScript中存在安全整数的概念?,javascript,Javascript,在我的chrome inspector控制台上,我观察到本地javascript中有一些奇怪的东西。例如,我运行了这个 var a=10208629303283853; var b=10208629303283855; 控制台日志(a); 控制台日志(b) 结果是什么 10208629303283852 10208629303283856 为什么在价值上存在差异。在谷歌上,我发现上面的数字超出了安全限制(请参阅下面的链接)。这可能会导致其行为异常。为什么会有这样的概念?为什么var允许我们首先存

在我的chrome inspector控制台上,我观察到本地javascript中有一些奇怪的东西。例如,我运行了这个

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或其他任何值。