javascript 大整数舍入因为精度? (为什么?)

标签 javascript google-chrome safari precision

如果你这样做

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/

相关文章:

javascript - 使用 module.exports 和 ES6 导出导入

javascript - 内容内的颜色编码可编辑吗?

html - 选取框替换在 Safari 5.1.7 (Windows 10) 上不起作用

cookies - Safari 在请求中不包括 cookie,但 Safari incognito 呢?

javascript - onclick JS函数调用,返回 "Can' t find variable"only in Safari Console

javascript - 在弹出窗口中单击退出按钮时防止父页面重新加载

javascript - CSS 或 jQuery 不间歇性加载

javascript - 通过 Chrome 扩展程序单击页面上的元素

c# - 客户端在 selenium 测试期间无法连接到服务器

javascript - 当在 chrome 中启用记住密码时,JQuery 更改事件不会在密码字段上加载时触发