我遇到的问题是没有正确计算总数。
我的总价值为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);
}
答案 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);
}