0

重複の可能性:
JavaScriptの数学は壊れていますか?
分数を追加すると、PHPで異なる結果が得られます

$grand_total =  (float)$subtotal_email +  (float)$delivery_email + (float)$fuel_surcharge_email - (float)$discount_coupon_email + (float)$texas_tax_email - (float)$cancel_fee_email -  (float)$refund_email - (float)$refund_tax_email - (float)$coupon_tmp;
echo (float)$subtotal_email." +  ".(float)$delivery_email." + ".(float)$fuel_surcharge_email." - ".(float)$discount_coupon_email." + ".(float)$texas_tax_email." - ".(float)$cancel_fee_email." -  ".(float)$refund_email." - ".(float)$refund_tax_email." - ".(float)$coupon_tmp." = ".(float)$grand_total;

上記をphpで実行すると、次の出力が得られます。

89.99 + 0 + 16.2 - 0 + 8.61 - 3 - 100 - 10 - 1.8 = -2.88657986403E-15

しかし、LHSを見ると、そうあるべきです0。これは、フロートの有無にかかわらず発生します。

4

2 に答える 2

2

浮動小数点演算はそれほど正確ではありません。ゼロと比較する必要がある場合は、別のものを取得して、いくつかの小さな数と比較する必要があります。

if (abs($result) < 0.00001)) {
    // it's zero
} else {

}
于 2012-07-03T09:41:14.120 に答える
1

浮くから。sを使用intして、セント(* 100)で値を計算します。

于 2012-07-03T09:40:54.603 に答える