No existe el cálculo financiero "preciso" debido a solo dos dígitos de fracción decimal, pero ese es un problema más general.
En JavaScript, puede escalar cada valor en 100 y usarlo Math.round()
cada vez que puede ocurrir una fracción.
Podría usar un objeto para almacenar los números e incluir el redondeo en su valueOf()
método de prototipos . Me gusta esto:
sys = require('sys');
var Money = function(amount) {
this.amount = amount;
}
Money.prototype.valueOf = function() {
return Math.round(this.amount*100)/100;
}
var m = new Money(50.42355446);
var n = new Money(30.342141);
sys.puts(m.amount + n.amount); //80.76569546
sys.puts(m+n); //80.76
De esa manera, cada vez que use un objeto Money, se representará como redondeado a dos decimales. El valor sin redondear todavía es accesible a través de m.amount
.
Puede construir su propio algoritmo de redondeo Money.prototype.valueOf()
, si lo desea.
3000.57 + 0.11 === 3000.68
vuelvefalse
.