web-dev-qa-db-ja.com

float値の丸め

12.256852651のようなdouble値があり、12.257として文字列型に変換せずに浮動小数点数として表示したい。

C#でどうすればよいですか?

31
Dharmesh

最初にDecimalに変換してから、Math.Round結果について。この変換は厳密に必要というわけではありませんが、2進浮動小数点を使用しているときに小数位に丸めると、少し不安になります。

Math.Round((Decimal)f, 3, MidpointRounding.AwayFromZero)

また、 MidpointRounding の選択も検討する必要があります。デフォルトでは、これはBankerのラウンドを使用するためです。

48
CodesInChaos

あなたがそれを表示したい場合、それは文字列になり、それはあなたが使用する必要があるものです。

後で計算で使用するためにroundにする場合は、Math.Round((decimal)myDouble, 3)を使用します。

計算に使用するつもりはないが、displayする必要がある場合は、double.ToString("F3")を使用します。

10
Oded