如何使用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是可用的最大精确整数值,您的值大于该值。不确定数字部分,但这会得到逗号。代码来源:谢谢你的努力。谢谢你的努力。