嘿伙计我在Javascript中解析字符串时遇到问题。 我有一个很大的数字(162778063615164416)作为一个字符串。这就是不和谐的用户ID的样子。 现在我尝试将其转换为数字,但它总是返回错误的值。
运行代码段以查看它。
var qs = 'querySelector',
qsa = 'querySelectorAll';
document[qs]('input').addEventListener('input', event => {
var val = event.target.value;
document[qsa]('td')[0][qs]('input').value = parseInt(val);
document[qsa]('td')[1][qs]('input').value = Number(val);
document[qsa]('td')[2][qs]('input').value = eval(val);
})

<table style="border: solid 1px">
<thead>
<tr>
<th colspan="3"><input value="162778063615164416" style="width:98%; text-align: center"></th>
</tr>
<tr>
<th>parseInt()</th>
<th>Number()</th>
<th>eval()</th>
</tr>
</thead>
<tbody>
<tr>
<td><input id="parse" style="text-align: center" value="162778063615164400" disabled></td>
<td><input id="number" style="text-align: center" value="162778063615164400" disabled></td>
<td><input id="eval" style="text-align: center" value="162778063615164400" disabled></td>
</tr>
</tbody>
</table>
&#13;
我使用了三种不同的方法来做同样的事情,它们都返回了错误的值。输出值应与输入值相同。 任何人都知道,如何将这个长度的字符串转换为数字?
我使用Discord API为Node.js创建了一个selfbot。用户向频道发送消息,并且程序应该读取用户ID以识别它应该回复的唯一一个人。我无法在程序代码中编写ID,因为它的动态:我想将它打包成.exe,其他人(不懂JavaScript或不想安装的人) Node.js)也可以使用它来发送嵌入并做其他很酷的东西。
答案 0 :(得分:6)
MAX_SAFE_INTEGER常量的值为9007199254740991
你应该问问自己为什么要将它转换为数字。你想比较它们吗?您可以比较Strings
。你想寻找特殊的价值观吗?您可以在Strings
上使用Regexp。
答案 1 :(得分:1)
使用parseFloat();它将以指数
给出结果或
你可以使用一个名为BigInteger.js的JavaScript库。它是一个任意长度的Javascript整数库,允许对无限大小的整数进行算术运算,尽管有内存和时间限制。这个库可以从这个下载link.Like var largeNumber = bigInt(&#34; 75643564363473453456342378564387956906736546456235345&#34;);您可以在https://www.npmjs.com/package/big-integer
找到lib的文档答案 2 :(得分:0)
它比最大安全整数
大使用浮动类型
console.log(Number.MAX_SAFE_INTEGER > 162778063615164416)
&#13;