プログラムを書く人は知ってると思うけど、少数以下を四捨五入する場合は、0.5を足して、少数以下を切り捨てるという処理をすればいい。
1.4 + 0.5 = 1.9 → 少数以下を切り捨てで 1
1.5 + 0.5 = 2.0 → 少数以下を切り捨てで 2
1.6 + 0.5 = 2.1 → 少数以下を切り捨てで 2
この前かかわった某システムはデータごとに、四捨五入するか、切り捨てするか、切り上げするか、端数処理がバラバラになっている。
でもデータごとにフラグをもって、どの端数処理するか分岐するという処理にはなっていない。
フラグの代わりに
切り捨てするデータには、0.0
切り上げするデータには、0.9
という「端数処理係数」をもっていて、
値 + 端数処理係数 → 少数以下を切り捨て
という処理をしていた。
最初見たときには「分岐しないでいいからスマートなやりかたじゃん」と思ったけど、よく考えたら切り上げの時の端数処理係数は、0.9でなくて0.999999…だよな。
うわぁ。なんというか。。 そもそもそれどういう処理系で、金額は何の型に入れて計算してるの?
独自の数値型作ってるのでは、と思って読んでた。フラグがどーとか
絶対小数点以下一桁しかないってんならそれでいいけど、お金の話ならそんなわけないよなぁ
それ機密じゃないの\\\