2011-02-05 11 views
0

この数式で優先順位が正しくありません。計算が正しくない

私がしたいのは、割引なしで小計を計算することです。誰かが私のミスをどこにしているのか教えてくれますか?

((`p`.`tax_state` + `p`.`tax_fed`)/100) * 
    ((`p`.`price` * `op`.`quantity`) - 
     ((`p`.`price` * `op`.`quantity`) * `op`.`discount`)) 
+0

税を含まない小計を計算する場合、式に「tax_state」と「tax_fed」という単語が含まれているのはなぜですか? – jmort253

+0

私は、税金と割引を含めて、正しい合計があることを確認するためにそれらを取り戻したかったのです。 – Jim

+0

'discount'は数字(' 25')に格納されていますか?または分数(「.75」)である。 –

答えて

0

税率が割合として格納されますが、値引きは端数として格納されている(一貫性のためにそんなに!)、およびバッククォートが本当に必要でないと読みやすさのために非常に望ましくないことに注意していることを考えると、そして...

(p.price * op.quantity) AS gross_price_exc_tax, 
(p.price * op.quantity) * (1 + (p.tax_state + p.tax_fed)/100) 
         AS gross_price_inc_tax, 
(p.price * op.quantity) * (1 + (p.tax_state + p.tax_fed)/100) * 
     (1 - op.discount) AS net_price_inc_tax, 
... 

これらはあなたが書いたものとかなり似ているので、あなたは、あなたが入力データとして持っているものを証明する必要があり、何を結果として得ている、とあなたが期待したものを説明することができるはずですあなたが持っているものとは対照的に。浮動小数点値であると予想されるときに、MySQLが式の一部を整数として扱う危険性はありますか?

また、私が行ったようにして、一度に1組の式を構築し、毎回結果を分析してください。これにより、問題をより早く見つけるのに役立ちます。例えば、私は追加することができます。その代わりに1.125または何が正しい端数があるの1として現れた場合

(1 + (p.tax_state + p.tax_fed)/100) AS tax_multiplier 

を、その後、私はおそらく2つの定数に小数点を追加し、その式を見直すことを知っていると思います。

関連する問題