|
分類:[.NET 全般]
お世話になります。
小数点3位まであるdouble型の数値を小数点2位で四捨五入する処理を作成し、 動作確認の際に発見したのですが、他の値と四捨五入の結果が異なる特定の数値があります。
その値とは「4.895」で、小数点2位で四捨五入すると「4.90」にはならず、「4.89」になります。
「5.895」「3.895」「2.895」「1.895」等の数値を同様に四捨五入するとそれぞれ「5.90」「3.90」「2.90」「1.90」 になるのに、「4.895」の結果だけが異なるのです。
四捨五入に使ったのは、じゃんぬねっと様作成の関数「ToHalfAdjust」およびMath.Round関数に MidpointRounding.AwayFromZeroを指定したものを使ってそれぞれ確認しましたが、いずれも結果は同じでした。
プログラム的な四捨五入の結果は一般的な四捨五入とは異なる事は承知していますが、数値によって結果が異なるのは それ以前の問題と思いますので、何とか解決したいと思うのですが、原因と対策をご存知の方がおられましたら どうぞよろしくお願いいたします。
一旦整数化するのが一番確実なんでしょうか・・・
|