乗算したい値を引き出すと、それらは文字列になります。そこで、それらを引き出して、浮動小数点数として解析し (小数点以下の桁数を維持するため)、乗算します。
LineTaxRate = parseFloat(myRate) * parseFloat(myQuantity) * parseFloat(myTaxRateRound);
これで請求書の 99% はうまくいきましたが、非常に奇妙な問題が 1 つ見つかりました。
掛けた場合:78×7×0.0725
Javascript が返されます: 39.584999999999994
通常、電卓で計算すると、39.585になります。
すべてが完了したら、その数値を取得し、.toFixed(2)を使用して丸めます。
Javascript がその数値を返すため、 $39.59の目的の値に丸められません。
合計でMath.round()を試しましたが、それでも同じ数値が得られます。
数値を小数点以下 3 桁から 2 桁に四捨五入することを考えましたが、それはハッキーに思えます。
私はどこでも検索しましたが、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>