数字十进制问题

时间:2018-05-16 16:45:09

标签: javascript

我遇到的问题是没有正确计算总数。

我的总价值为24,我期待25.60000

我做错了什么?

示例:

var a = "12.80000"; //Set as string deliberately
var b = "12.80000";

var total = 0;
total += roundAmount(parseInt(a), 5);
total += roundAmount(parseInt(b), 5);

console.log(total); 

function roundAmount(value, decimals) {
    return Number(Math.round(value + 'e' + decimals) + 'e-' + decimals);
}

3 个答案:

答案 0 :(得分:2)

你用parseInt砍掉小数,你需要parseFloat。

var a = "12.80000"; //Set as string deliberately
var b = "12.80000";

var total = 0;
total += roundAmount(parseFloat(a), 5);
total += roundAmount(parseFloat(b), 5);

console.log(total); 

function roundAmount(value, decimals) {
    return Number(Math.round(value + 'e' + decimals) + 'e-' + decimals);
}

您不会在输出中获得额外的尾随零,如果需要,您需要在输出时使用toFixed(5)。

答案 1 :(得分:0)

您的问题是您使用parseInt()将浮点数转换为整数,因此您的计算机将“12.8000”存储为整数类型(即12)。请尝试使用parseFloat()函数。

答案 2 :(得分:0)

你的parseInt()函数在添加之前将数字四舍五入为12,而是使用parseFloat()。 这对我有用:

var a = "12.80000"; //Set as string deliberately
var b = "12.80000";

var total = 0;
total += roundAmount(parseFloat(a,10), 5);
total += roundAmount(parseFloat(b,10), 5);

console.log(total); 

function roundAmount(value, decimals) {
    return Number(Math.round(value + 'e' + decimals) + 'e-' + decimals);
}