如何使用Javascript / jQuery将长数字符串值转换为数值

时间:2015-08-05 11:21:19

标签: javascript jquery

允许用户在textbox中插入最多25个值。

i.e. 1234567890123456789012345

在文本框的更改事件中,我需要将其转换为数值以执行数值运算,然后需要显示相同的输入值,千位分隔符和2位小数。

我尝试了以下代码:

  1. Number($('#textbox1').val()).toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ",")
  2. parseInt($('#textbox1').val(), 10).toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ",")
  3. 两者都给了我以下输出

    1.2,345,679,801,234,568e+21
    

    预期产出: -

    1,234,567,890,123,456,789,012,345.00
    

3 个答案:

答案 0 :(得分:0)

尝试使用autoNumeric js。找到它here

答案 1 :(得分:0)

这件事对你有用吗?我在互联网上发现了它......

function addCommas(nStr) {
  nStr += '';
  x = nStr.split('.');
  x1 = x[0];
  x2 = x.length > 1 ? '.' + x[1] : '';
  var rgx = /(\d+)(\d{3})/;
  while (rgx.test(x1)) {
    x1 = x1.replace(rgx, '$1' + ',' + '$2');
  }
  return x1 + x2 + '.00';
}

答案 2 :(得分:0)

从数字的角度来看,仍然无法在JavaScript上获得任何解决方案,因此我将值发布到服务器端并获得JSon结果。

但为了显示目的,我终于做到了:

function ChangeAmountFormat(target) {
var $this = $(target);
var num = $this.val().replace(/,/g, '').replace(/(\s)/g, '');
var decimalPointDeleted = '';

if (lastValue.length > 0 && lastValue.indexOf('.') > 0 && num.indexOf('.') < 0) {
    decimalPointDeleted = 'y';
}

if (num.indexOf('.') >= 0) {
    var numSplitValues = num.split('.');
    num = numSplitValues[0].toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    num += (num.length > 0 ? ('.' + numSplitValues[1]) : '');
}
else {
    if (decimalPointDeleted == 'y' && num.toString().substring((num.length - 2), num.length) == '00') {
        var tempNum = num.toString().substring(0, (num.length - 2));
        num = tempNum + '.' + num.toString().substring((num.length - 2), num.length);
    }
    else {
        num = num + (num.length > 0 ? '.00' : '');
    }

    num = num.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

$this.val(num);
}

这里还有一些东西可以处理。请忽略。