[Visual Basic]四捨五入を行う
Math.roundメソッドにMidpointRounding.AwayFromZeroオプションを使えば四捨五入が行えることになっているが、丸める数値がDouble型の場合、うまくいかないことがあるため要注意。確実に四捨五入を行うには、数値をDecimal型にしたほうがよい。
Double型でも特にエラーは発生せずに使用できるが、MSDNのサンプルプログラムではDecimal型で行っている。
プログラム例
Dim dbl As Double
Dim dec As Decimal
' とりあえずDouble型で四捨五入を試してみる
' 手計算ではそれぞれ1.3、1.4になり、そのとおり出力される
dbl = 1.25
Console.WriteLine(CStr(Math.Round(dbl, 1, MidpointRounding.AwayFromZero)))
dbl = 1.35
Console.WriteLine(CStr(Math.Round(dbl, 1, MidpointRounding.AwayFromZero)))
' 複雑な式の結果を四捨五入してみる
' 手計算では20.1113になるはずだが、出力結果は20.1112となり四捨五入されていない
dbl = (Math.Abs(20.11125) + Math.Abs(20.11125)) / 2
Console.WriteLine(CStr(Math.Round(dbl, 4, MidpointRounding.AwayFromZero)))
' 同じことをDecimal型で試してみる、出力結果は20.1113になる
dec = (Math.Abs(20.11125D) + Math.Abs(20.11125D)) / 2
Console.WriteLine(CStr(Math.Round(dec, 4, MidpointRounding.AwayFromZero)))
出力
1.3
1.4
20.1112
20.1113
« [R]エンコードを指定する際の文字を調べる(使用できるエンコードの一覧を表示する) | トップページ | [Excel]数値を四捨五入する »
「Visual Basic」カテゴリの記事
- [Visual Basic]ImageMagickを利用する(2023.10.10)
- [Visual Basic]各プロジェクトで自動作成されるソースファイルの文字コードと改行コード(2023.01.31)
- [Visual Basic]文字の全角半角を判定する(2022.03.07)
- [Visual Basic]コマンドプロンプトでコンパイルする(Visual Studio 2019 Professional)(2021.06.13)
- [Visual Basic]コマンドラインでコンパイルする(2020.07.28)
« [R]エンコードを指定する際の文字を調べる(使用できるエンコードの一覧を表示する) | トップページ | [Excel]数値を四捨五入する »
コメント