Когда я тяну, когда я хочу умножить, они строки. Так что я тянут их, разбирая их как поплавки (чтобы сохранить десятичные места) и умножить их вместе.
LineTaxRate = parseFloat(myRate) * parseFloat(myQuantity) * parseFloat(myTaxRateRound);
Это работало на 99% моих счетов, но я обнаружил один очень странный про мрачный
Когда он умножить: 78 * 7 * 0,0725
JavaScript возвращается: 39.584999999999994
Когда вы обычно делаете математику в калькуляторе его: 39,585
, когда все Сказал и сделано, я беру этот номер и вокруг него используя .tofixed (2)
, потому что JavaScript возвращает этот номер, он не округляется до желаемого значения: $ 39,59
Я попробовал ] Math.round () Всего, но я все еще получаю тот же номер.
Я подумал об округлении числа до 3 десятичных средств, а затем два, но это кажется хакей для меня.
Я искал повсюду, и все, что я вижу, - это люди упоминают, что Parsefloat теряет свою точность и использовать .tofixed, однако в примере выше, это не помогает.
Вот мой тестовый скрипт, который я сделал, чтобы воссоздать проблему:
<script>
var num1 = parseFloat("78");
var num2 = parseFloat("7");
var num3 = parseFloat("0.0725");
var myTotal = num1 * num2 * num3;
var result = Math.round(myTotal*100)/100
alert(myTotal);
alert(myTotal.toFixed(2));
alert(result);
</script>