累計
本日
昨日

割り算に注意 除算は最後に行う

筆者がよくやる掛算・割り算の順序ミスとキャスト漏れの例である。

売上利益率=利益÷売上×100であるが、次のようにロジックを書くと思わぬ結果になってしまう。
とすると、利益率は15%となるべきだが、riekiritsu = 0となる。
式は前から順に評価されるので、rieki / uriage = 30 / 200の時点で値はint型に丸められゼロになる。ゼロに100を掛けて最終結果はゼロとなる。正しくは、次のようにしなければならない。

また、double型で計算しているときに、うっかり下記のようにロジックを書いてしまい精度が損なわれしまうことがよくある。
利益率は19.9%になるべきなのに、19.0となってしまう。これは100がint型であるため、rieki * 100の計算結果が、int型になり、その結果、rieki *100 / uriageの計算結果がint型の19になってしまい、最終結果が19.0となってしまう。
正しくは、100をdouble型にキャストして計算しなければならない。

トラックバック

トラックバックURL:
http://www.apricot-jp.com/cgi/mt/mt-tb.cgi/324

関連情報

Copyright(C) 2007 アーキテクト360 Allrights reserved.