Javascript数组.Push改变长整数

Javascript array.push change the long integer number?

本文关键字:长整数 改变 Push 数组 Javascript      更新时间:2023-09-26

你好,我的javascript代码如下。

<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits;
function myFunction() {
    fruits.push(611087636212662272);
    document.getElementById("demo").innerHTML = fruits;
}
</script>

输出
Banana,Orange,Apple,Mango,611087636212662300

我需要输出如下:

Banana,Orange,Apple,Mango,611087636212662272

我输入"611087636212662272",为什么Javascript返回"611087636212662300"作为输出

如何解决这个问题?

Solution - add "在value中,它将为水果数组添加确切的值。

<>之前fruits.push("611087636212662272");//这将推送精确的值

数字太大,失去精度。JavaScript数字是64位浮点值,最大的精确整数值是2^53,即9007199254740992。

ECMA Section 8.5 - Numbers

请注意,所有大小不大于2^53的正整数和负整数都可以用Number类型表示(实际上,整数0有+0和- 0两种表示形式)。

这是实现

的另一种方法
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var fruitNum  = fruits + ' 611087636212662272';
document.getElementById("demo").innerHTML = fruitNum;