如何转换一个数字,我用一个逗号从一个字符串替换点到十进制数字

时间:2017-03-29 08:34:50

标签: javascript jquery replace number-formatting parseint

我有一个输入字段,用户可以使用点或逗号输入十进制数字(例如:79,99或79.99)。当用户使用逗号输入数字时,我将其替换为点(此数字随后会发送到远程服务器进行验证)。现在我想在用户使用toFixed(2)函数在页脚中输入数字后显示数字,只显示前两个十进制数字。我无法使它工作,因为在使用ParseFloat将其转换回数字之后,逗号消失后的2位小数。

示例:

用户输入输入字段:79,99,然后将其设置为变量totalAmount:

$('#amount-1').keyup(function() {

getRefundAmount(1); // This function calls the calcTotalAmount function

})

function calcTotalAmount() {
console.log('calcTotalAmount');

var totalAmount = 0;
var totalRefund = 0;
var rowAmount = 0;
var rowRefund = 0;

for(var i = 1; i < 4; i++ ) {
    rowAmount = parseFloat($('#amount-' + i).val());
    rowRefund = parseFloat($('#result-' + i).text());
    if(!isNaN(rowAmount)) {
        totalAmount += rowAmount;
        totalRefund += rowRefund;
    }
}

var toPay = totalAmount-totalRefund;
totalAmount = totalAmount.toString().replace(/\,/g, '.');
totalAmount = parseFloat(totalAmount).toFixed(2);


$('#footer-refund').text(totalRefund)
$('#footer-total').text(totalAmount)
if (totalAmount == '') {
    $('#footer-total').text("0.00");
}
}

页脚中显示的结果为:79.00而不是79.99

3 个答案:

答案 0 :(得分:0)

我在jsfiddle中尝试了你的代码并在“.toFixed(2)”上出错了 更改它后,我可以防止错误。:

$(function() {
   var totalAmount = '79,99';
   totalAmount = parseFloat( totalAmount.toString().replace(/\,/g, '.'));
   totalAmount = totalAmount.toFixed(2);
   $('#footer-refund').text(totalAmount)
});

https://jsfiddle.net/jkrielaars/2gb59xss/1/

答案 1 :(得分:0)

看起来您提供的代码效果很好但是您可以应用一些修复:

totalAmount = ("" + totalAmount).replace(/\,/g,'.');
totalAmount = parseFloat(totalAmount);
//use toFixed only if you don't restrict input to 2 decimals, but I'd recommend restricting input otherwise you'll encounter rounding issues

顺便说一句,你做$('#footer-refund').text(totalRefund.toFixed(2)),不应该是$("#footer-refund").text(totalAmount)(不知道为什么你也在这里使用固定)?

答案 2 :(得分:0)

感谢您的帮助:

解决方案如下:我必须在for循环中检查它并在那里替换它。

for(var i = 1; i < 4; i++ ) {
    if(!$('#amount-' + i).val()){continue;}else{ 
    rowAmount = parseFloat($('#amount-' + i).val().toString().replace(/\,/g,'.'));
    rowRefund = parseFloat($('#result-' + i).text());
    if(!isNaN(rowAmount)) {
        totalAmount += rowAmount;
        totalRefund += rowRefund;
    }
    }
}