Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript/jQuery将长数字字符串值转换为数值_Javascript_Jquery - Fatal编程技术网

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

如何使用Javascript/jQuery将长数字字符串值转换为数值,javascript,jquery,Javascript,Jquery,用户最多可以在文本框中插入25个值 i.e. 1234567890123456789012345 在文本框的更改事件中,我需要将其转换为数字值以执行数字操作,然后需要使用千位分隔符和2位小数显示相同的输入值 我尝试了以下代码: Number($('#textbox1').val()).toFixed(2)。替换(/\B(?=(\d{3})+(?!\d))/g,“,” parseInt($('#textbox1').val(),10).toFixed(2).替换(/\B(?=(\d{3})+(?

用户最多可以在
文本框中插入25个值

i.e. 1234567890123456789012345
在文本框的更改事件中,我需要将其转换为数字值以执行数字操作,然后需要使用千位分隔符和2位小数显示相同的输入值

我尝试了以下代码:

  • Number($('#textbox1').val()).toFixed(2)。替换(/\B(?=(\d{3})+(?!\d))/g,“,”
  • parseInt($('#textbox1').val(),10).toFixed(2).替换(/\B(?=(\d{3})+(?!\d))/g,“,”
  • 两者都给我以下输出

    1.2,345,679,801,234,568e+21
    
    预期产出:-

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

    尝试使用自动数字js。找到像这样适合你的工作吗?我在网上找到的

    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';
    }
    

    从数值的角度来看,我仍然无法在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);
    }
    
    函数ChangeAmountFormat(目标){
    变量$this=$(目标);
    var num=$this.val().replace(/,/g',).replace(/(\s)/g',);
    var decimalPointDeleted='';
    如果(lastValue.length>0&&lastValue.indexOf('.')>0&&num.indexOf('.')<0){
    删除的小数点='y';
    }
    如果(num.indexOf('.')>=0){
    var numSplitValues=num.split('.');
    num=numSplitValues[0].toString().replace(/\B(?=(\d{3})+(?!\d))/g,“,”;
    num+=(num.length>0?('.'+numsplitvalue[1]):'';
    }
    否则{
    如果(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);
    }
    否则{
    num=num+(num.length>0?'.00':'';
    }
    num=num.replace(/\B(?=(\d{3})+(?!\d))/g,“,”;
    }
    $this.val(num);
    }
    

    在这里,还有一些事情需要处理。请忽略。

    Number.MAX\u SAFE\u INTEGER是可用的最大精确整数值,您的值大于该值。不确定数字部分,但这会得到逗号。代码来源:谢谢你的努力。谢谢你的努力。