javascript - 数字正在改变值(value)

标签 javascript floating-point

我以前遇到过这个问题,但使用的是 float 。类似于 this other post .但现在是正常数字。

我正在尝试这样做:

var 
    str = 'asdf_10150663120210603',
    num = +str.split('_')[1];

console.log(num);
// 10150663120210603 expected
// 10150663120210604 actually resulting

所以我尝试在 Node & Chrome Inspector 中简单地输出数字。

console.log(10150663120210603);
// 10150663120210604 actually resulting

是否有任何疯狂的方法,无论是否骇人听闻,使变量等于 10150663120210603。还是我必须使用字符串?

最佳答案

JavaScript 中的 float 是 64 位 IEEE-754 浮点值。它们的尾数只有 52 位,而你的数字需要 54 位来表示。它只是四舍五入。

如果四舍五入为 10150663120210604 可以用 52 位表示。

关于javascript - 数字正在改变值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9371323/

相关文章:

JavaScript 命名空间和继承

php - Node.js 与传统 PHP 框架 : How to combine?

javascript - 检测导航至 <a name ="latest-topics"></a>

c++ - 输出 float 为三位数,或更多以避免指数

c++ - 修改函数以使用 SSE 内在函数

floating-point - PHP计算有缺陷

JavascriptExecutor Selenium WebDriver

asp.net - 使用 JavaScript 禁用和重新启用 asp.net Timer 控件

java - Java 的 BigDecimal 是否像 C++ 中的 long double 那样利用硬件架构?

javascript - 修正JavaScript中浮点精度错误的算法