Math.Ceilingの挙動
- 題名: Math.Ceilingの挙動
- 著者: こう
- 日時: 2008/04/30 20:25:39
- ID: 21960
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: Math.Ceilingの挙動
- 著者: Hongliang
- 日時: 2008/04/30 20:56:44
- ID: 21962
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: Math.Ceilingの挙動
- 著者: 魔界の仮面弁士
- 日時: 2008/04/30 22:17:57
- ID: 21965
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: Math.Ceilingの挙動
- 著者: こう
- 日時: 2008/05/01 8:08:51
- ID: 21970
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
不可思議な現象に困っています。
Dim D1 As Double = 1.1#
Dim D2 As Double = 100#
Dim D3 As Double = D1 * D2
MsgBox(D3.ToString)
'110と表示
MsgBox(Math.Ceiling(D3).ToString)
'111と表示
うちの環境だけでしょうか。
それとも .Net Framework のバグなんでしょうか。
やりたかったことは、double型変数を、小数点第3桁を切り上げて、
小数点2桁の文字列を得ようとして、
Private Function Ceil3(ByVal D As Double) As String
Return Format(CDbl(Math.Ceiling(D * 100.0#)) / 100.0#, "#0.00")
End Function
としたのですが、D=1.1だと、1.11が返ってきてしまうのです。
とりあえず他の方法で逃げてもいいのですが、
何かよい方法はないでしょうか?