前提・実現したいこと
.999...
の値を1
として処理したい
発生している問題・エラーメッセージ
現在小数点許容、基本的に切り捨て処理である処理を作成しています。
(Decimal型で受けて、Decimal型で返します)
このとき、例えば123.9999....
の値の場合、返り値が123
になってしまいますが、
実計算上では124
になってほしいのです。
この対策についていろいろと調べてみましたが、いまいち要領を得ず
(.999...は浮動小数点としての計算的には正しい処理なので当然なのでしょうが...)
このままだとif
条件分岐などで対応してしまいそうなので、
0.999... = 1 にする一般的で最適な方法について、
ぜひ皆様のお知恵を拝借させてください。
該当のソースコード
private decimal Kirisute(decimal d){ //処理 } decimal da = 1 decimal db = (da / 3) decimal dc = db * 3 decimal dd = Kirisute(dc) // expected: dd = 1, dc = 0.999... // actual: dd = 0.999..., dd = 0.999....
補足情報(FW/ツールのバージョンなど)
C# 3.0
VB 2008

回答5件
あなたの回答
tips
プレビュー