首页 > 解决方案 > JavaScript中长数的计算

问题描述

如何将 1 与00112014000002000003300008 相加?添加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

标签: javascriptjquery

解决方案


您从 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

基本示例

这个例子是一个非常基本的例子,如果你添加19.

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


推荐阅读