JQuery Calculation下降美分

时间:2015-08-17 03:45:11

标签: javascript firebase

我有这个块,它从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。

2 个答案:

答案 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);
}