我有这个块,它从Firebase获取当前支付的金额以及此刻支付的金额。然后它应该将两者加在一起以制作第三个变量。
出于某种原因,代码会从总计中减去美分。
singleRef.once("value", function(snapshot) {
var a = parseInt(snapshot.val().amounts.paid); // The amount already paid
var b = parseInt(invoice.payment.amount); // The amount being applied
var c = a + b;
console.log(c);
});
让我们说以下情况正在发生:
a = 0;
b = 10.86;
The result in this code will be:
c = 10; // should be 10.86
让我们说以下情况正在发生:
a = 10.00;
b = 10.86;
The result in this code will be:
c = 20; // should be 20.86
分钱是什么并不重要,它总是要摆脱它们。我尝试将.toFixed('2')
添加到所有变量中,只是a和b,只是c。所有这些都导致相同的总分数。
HOW!?过去几个小时我一直在尝试这样做,这可能很简单,但我无法弄清楚。这让我疯了!我正在使用angularjs和firebase。
答案 0 :(得分:1)
函数parseInt()
具体用于解析整数,因此,如果你给它3.14159
,它会返回3
。
如果要解析浮点值,请尝试parseFloat()
。
例如,以下代码:
var a = parseInt("3.141592653589");
var b = parseInt("2.718281828459");
var c = a + b;
alert(c);
var d = parseFloat("3.141592653589");
var e = parseFloat("2.718281828459");
var f = d + e;
alert(f);
会给你两个不同的输出:
5
5.859874482047999
答案 1 :(得分:1)
正如其他人所说,你不能用parseInt()
解析美元和美分。
使用花车对任何金融/货币都是一个坏主意。
大多数金融系统只是以美分存储价格/美元价值,如果需要显示价值,您可以编写一个功能,以便为用户很好地格式化。
function(cents) {
cents = +cents; // unary plus converts cents into a string
return "$" + cents.substring(0, cents.length - 2) + "." + cents.substring(cents.length - 2);
}