如果你这样做
for(var i = 0; i < 30; i++){console.log(i + " == " + 78764357878563800 + " ? ");console.log((78764357878563790+i) == 78764357878563800);}
你开始比较从 78764357878563790 到 78764357878563790+29 的值,所以......如果你运行它,你会得到 true 从 i = 8 到 24。
所以我不知道我是否不明白,但不应该存在 maxint(我不知道)和 maxint-1???然后 max 与 maxint-1 不同吗?
我想这是像 float 一样的精度......但这不应该只命中 float ,例如,数字 + 1 总是给出后继? (因此在上面的示例中,如果 i = 78764357878563790 并添加 i++,则进入无限循环。
我事先知道这种类型的数字间距存在于 float 中,但从未遇到过整数也不能表示 i+1 和 i-1 的情况(我一直认为 unsigned maxint + 1 会进位并给出0).
任何suguestions在:
- js中最大数是多少,前数是多少。
- 如何处理或知道这种整数行为何时开始发生。
- 如何处理这么大的数字以及比这更大的数字会很好。
最佳答案
Javascript 中没有整数。
数字是 double float ,精度为 15-16 位。这与您的结果一致。
关于javascript 大整数舍入因为精度? (为什么?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5812096/