JavaScript умножение неправильно, вызывая неверное округление

Когда я тяну, когда я хочу умножить, они строки. Так что я тянут их, разбирая их как поплавки (чтобы сохранить десятичные места) и умножить их вместе.

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>
5
задан Mat 13 September 2011 в 18:16
поделиться