javascript - parseInt 返回相差 1 的值

标签 javascript

<分区>

我有这样的数据:

var currentValue="12345678901234561";

我正在尝试解析它:

var number = parseInt(currentValue, 10) || 0;

我的结果是:

number = 12345678901234560

现在让我们试试:

currentValue="12345678901234567"

在这种情况下,parseInt(currentValue,10) 将导致 12345678901234568

谁能解释一下为什么 parseInt 从我提供的值中加/减 1?

最佳答案

Can anyone explain me why parseInt is adding/substracting 1 from values provided by me?

不完全是,但是 JavaScript 数字是 IEEE-754 double-precision binary floating point (即使您使用的是 parseInt ),其精度也只有大约 15 位。您的号码是 17 位长,因此精度会受到影响,并且最低位的数字变得松软。

最大可靠整数值为 9,007,199,254,740,991,可从属性 Number.MAX_SAFE_INTEGER 获得。在现代 JavaScript 引擎上。 (同样,还有 Number.MIN_SAFE_INTEGER ,即 -9,007,199,254,740,991。)

一些特定于整数的操作,例如按位运算符 ~ , & , 和 | , 将它们的 float 操作数转换为带符号的 32 位整数,这给了我们一个更小的范围:-231 (-2,147,483,648) 到 231-1 ( 2,147,483,647)。其他的,比如 << , >> , 和 >>> ,将其转换为 unsigned 32 位整数,范围为 0 到 4,294,967,295。最后,为了完善我们的整数讨论,length数组的 of 始终是无符号 32 位整数范围内的数字。

关于javascript - parseInt 返回相差 1 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33229172/

相关文章:

javascript - 使用 ReactJS 循环遍历 JSON 数组,但不了解代码的实际工作原理

javascript替换2个字符

javascript - Jquery UI Calendar//按月更改背景图片

javascript - 从段落内的选择中获取选定的值

php - json_encode 将 php 数组传递给 javascript 数组

javascript - 如何从两个元素中获取文本,将它们转换为数字并将它们添加到 cypress 中?

javascript - 使用Jquery动态添加文本字段

javascript - 如何在文本区域内添加标签?

javascript - JSON/Javascript 对象文字语法

Javascript React 单页应用程序 + Amazon S3 : Permalinks issue