JavaScript中长整数的计算

时间:2018-12-24 09:47:36

标签: javascript jquery

如何将 00112014000002000003300008 加1?添加1后,我需要 00112014000002000003300009

我正在尝试删除前两个零。我的代码如下所示

var lastrow = $('#lastrow');
var item_no = +lastrow.find('.item_no').text();
    
var item_no_to_increase = item_no.toString().substring(2);
    
console.log(item_no_to_increase);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="lastrow">
  <p class="item_no">00112014000002000003300008</p>
</div>

我想在删除零后加1。但是我得到控制台输出 12014000002e + 23

1 个答案:

答案 0 :(得分:2)

您从DOM检索的值已经是一个字符串,但是您可以通过使用+前面的+lastrow将其强制为数字。摆脱掉+并抛弃.toString()中的item_no.toString().substring(2);

此外,JavaScript中的最大数量为9007199254740991。因此,您必须在数字的一小部分上做一些加法运算,然后将其作为字符串重新加入。

这是一篇很棒的文章,展示了如何处理大量数字:

https://medium.com/@nitinpatel_20236/javascript-adding-extremely-large-numbers-and-extra-long-factorials-229b6055cb1a

还有一个库可以为您完成所有繁重的工作:

https://github.com/niinpatel/addVeryLargeNumbers

基本示例

该示例是一个非常基本的示例,如果在1中添加9,显然将无法正常工作。

var number = '00112014000002000003300008';

function incrementByOne(number) {
  var start = number.slice(0, number.length -1);
  var end = parseInt(number.slice(number.length -1));
  
  end++;
  
  console.log(start + end);
}

incrementByOne(number);

从HTML获取编号(每个评论讨论)

var lastrow = $('#lastrow');
var item_no = lastrow.find('.item_no').text();
console.log(typeof item_no, item_no);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="lastrow">
  <p class="item_no">00112014000002000003300008</p>
</div>

文档

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER