将字符串转换为整数

时间:2017-11-21 14:30:14

标签: javascript html node.js ecmascript-6 parseint

嘿伙计我在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;
&#13;
&#13;

我使用了三种不同的方法来做同样的事情,它们都返回了错误的值。输出值应与输入值相同。 任何人都知道,如何将这个长度的字符串转换为数字?

我使用Discord API为Node.js创建了一个selfbot。用户向频道发送消息,并且程序应该读取用户ID以识别它应该回复的唯一一个人。我无法在程序代码中编写ID,因为它的动态:我想将它打包成.exe,其他人(不懂JavaScript或不想安装的人) Node.js)也可以使用它来发送嵌入并做其他很酷的东西。

3 个答案:

答案 0 :(得分:6)

根据documentation

  

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)

它比最大安全整数

使用浮动类型

&#13;
&#13;
console.log(Number.MAX_SAFE_INTEGER > 162778063615164416)
&#13;
&#13;
&#13;