我正在尝试将一个大型int传递给HTML中的onclick事件中的函数。整体总是很长,如果没有四舍五入,我似乎无法将它传递给我的函数。我已经尝试了一些bigInt库到同一端,但我更喜欢简单的字符串转换。
我的js功能:
function initBuy(id){
console.log(id.toString());
}
和我的HTML事件:
<dt></dt><dd><a id="buy" onclick="initBuy(String(' + all_data[index].listing_id + '))" class="btn btn-success">Buy This Item</a></dd>
传递int的示例:
13934317650292905813
以及点击按钮的结果:
"13934317650292906000"
当我将它写入元素时,传递的int看起来很好。文本。然而,当我将它传递给函数时,它会将它四舍五入。
答案 0 :(得分:1)
从帖子here开始,Javascript中的整数最大值为9007199254740992
您的号码13934317650292905813
远远大于此值。
在这篇文章here中,您可以使用BigInteger.js来容纳大整数
答案 1 :(得分:0)
你在(模棱两可的)问题中说:
&#39;当我将它写入元素时,传递的int看起来很好。文本。但是,当我将它传递给函数时,它会将其四舍五入。&#39;
并在你的评论中:
如果我将
all_data[index].listing_id
设置为元素文本,则可以正常工作。
当前问题中没有任何内容将字符串转换为数字(我测试过) 一旦字符串被转换为数字,它将溢出IEEE 754的最大准确度2 ^ 53 = 9007199254740992。
请注意:initBuy(String(' + all_data[index].listing_id + '))
将返回字符串+ all_data[index].listing_id +
(应该如此)。
将字符串'13934317650292905813'
传递给initBuy
函数也会返回字符串'13934317650292905813'
(应该如此)。
换句话说,我无法使用您提供的代码重现您的问题。
我假设你已经简化了这个问题的initBuy
功能(你必须发布原始版本以供进一步检查,最好与 raw <的相关部分的摘录一起发布/ em> JSON字符串)。
我认为你可能会意外地将字符串转换为该函数内的数字(可能使用+
)!