Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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_Numbers_Integer - Fatal编程技术网

Javascript——使用数字作为整数可靠吗?

Javascript——使用数字作为整数可靠吗?,javascript,numbers,integer,Javascript,Numbers,Integer,为什么在Javascript中使用数字作为整数显然是安全的?我的意思是,像下面这样的循环通常是“可信的”,可以运行预期的次数,即使最后的循环需要精确比较(10000==10000),当这两个值是float而不是int时。是否有某种内置的舍入特性使其安全可靠?或者这种编码是可怕的、不可信的?谢谢 --编辑-- 有趣的是,有一个声明的安全整数范围。我不知道。我们都知道2+2=3.9999的标准呜呜声。我注意到MAX_SAFE_INTEGER列为ECMAScript-6,那么这是否意味着IEEE-75

为什么在Javascript中使用数字作为整数显然是安全的?我的意思是,像下面这样的循环通常是“可信的”,可以运行预期的次数,即使最后的循环需要精确比较(10000==10000),当这两个值是float而不是int时。是否有某种内置的舍入特性使其安全可靠?或者这种编码是可怕的、不可信的?谢谢

--编辑--

有趣的是,有一个声明的安全整数范围。我不知道。我们都知道2+2=3.9999的标准呜呜声。我注意到MAX_SAFE_INTEGER列为ECMAScript-6,那么这是否意味着IEEE-754实际上没有提到安全整数范围

var cnt=0;

对于(var i=0;i首先,最终循环不要求两个值相等。只要求
i
小于
10000

其次,JavaScript中的
Number
类型将整数值精确地上(下)到某一点。您可以访问
Number.MAX\u SAFE\u integer
Number.MIN\u SAFE\u integer
属性,查看浏览器/引擎的安全范围

如果要检查
Number
的实例是否为整数,只需使用
Number.isInteger()
方法即可

var i=10,e=document.getElementById('message'); if(编号:isInteger(i)){ e、 innerHTML=“i是一个整数”; }否则{ e、 innerHTML=“i不是整数”; }

IEEE-754双精度浮点数(JavaScript使用的那种)有一个非常大的范围,在这个范围内它们精确地表示整数,特别是-9007199254740991到9007199254740991。(这些值作为常量添加到JavaScript的
Number
函数中:和。)在这个范围之外,你确实可能会遇到麻烦

事实上,如果不是为了安全,这个循环永远不会结束:

var n,安全性;
安全系数=0;
用于(n=9007199254740990;n!=9007199254740999;++n){
如果(++safety===20){//n'之后很久应该匹配
log(“不得不爆发!”);
打破
}
snippet.log(“n=”+n);
}


请参阅:该循环保证是安全的。
Number.MAX\u safe\u INTEGER;//9007199254740991
,不要忘记在JavaScript中使用
==
表示相等,使用
=
表示抽象equality@floor严格模式对JavaScript的数据类型没有任何影响(至少,我们在这里讨论的意义不是这样)@JeremyBanks是的,你说得对,我现在觉得自己很蠢。我发誓我在某个地方读到你可以在javascript中启用其他数据类型。我不确定我是否会确切地说它“保存整数值”--这让我想到了明显标记的值。整数支持是标准浮点可以准确表示一系列整数值这一事实的副作用。这与使用标准浮点的任何地方都会出现的行为相同。@JeremyBanks-将措辞改得更清楚。