|
.NET TIPS 数値を四捨五入するには?[2.0のみ、C#、VB]デジタルアドバンテージ 一色 政彦2008/01/31 |
![]() |
|
|
|
数値を四捨五入するには、Mathクラス(System名前空間)の静的メソッドRoundを使う(.NET Framework 2.0のみ)。
なお、.NET Framework 1.xの時代からMath.Roundメソッドは提供されていたが、このメソッドは日本ではあまりなじみのない「最近接偶数への丸め」にしか対応していなかった。「最近接偶数への丸め」とは、(切り捨てや切り上げなどの)丸めを行う端数部分の数値がちょうど上と下の値の中間にある場合(例えば「2」と「3」のちょうど中間の値の「2.5」のような場合)に、最も近い偶数に数値を丸める端数処理のことだ。例えば「2.5」の小数点第1位を「四捨五入」した場合「3」になるが、「最近接偶数への丸め」を行った場合、最も近い偶数の「2」になる(ちなみに「2.51」の場合は両方とも「3になる」)。一般的に「四捨五入」よりも「最近接偶数への丸め」の方が、端数処理を累積したときの誤差が小さくなる。そのため、銀行家が好んで利用したので「Bankers Rounding(銀行家の丸め)」とも呼ばれている。
.NET Framework 2.0以降では、日本では一般的な、4以下を切り捨て5以上を切り上げる「四捨五入」に対応している。本稿ではこれを利用する方法を紹介する。
そのMath.Roundメソッドのシグネチャは次のとおりだ。
Math.Round (Decimal, Int32, MidpointRounding)
第1パラメータには四捨五入を行うDecimal型の数値を指定する。
第2パラメータには小数点第何位までを求めるか(=小数点以下のけた数)を指定する。例えば小数点第1位までを求める場合(=小数点第2位を四捨五入する)には、「1」を指定すればよい。
第3パラメータには「MidpointRounding.AwayFromZero」を指定する。これはMidpointRounding列挙体(System名前空間)のAwayFromZeroという値で、「四捨五入」を行うためのものだ。このほか「最近接偶数への丸め」を行うための「MidpointRounding.ToEven」も指定できる。
戻り値は、四捨五入された(もしくは最近接偶数へ丸められた)Decimal型の数値となる。
次のコードはMath.Roundメソッドを使用したコンソール・アプリケーションのサンプル・プログラムである。このプログラムでは前半で「四捨五入」を行い、参考までに後半では「最近接偶数への丸め」を行っている。
|
||
| 数値の四捨五入を行うサンプル・プログラム(上:C#、下:VB) |
「MidpointRounding.AwayFromZero」や「MidpointRounding.ToEven」の記述は長いので、見やすくするためにこれらをシンプルな変数(awayとeven)に置き換えているので注意してほしい。
パラメータに指定した数値の後ろに付いているサフィックス(C#の「m」や、VBの「D」「F」)は、数値のデータ型を明示するためのものだ。詳しくは「TIPS:数値のデータ型を明示的に指定するには?」を参照してほしい。![]()
| カテゴリ:クラス・ライブラリ 処理対象:数値関数 使用ライブラリ:Mathクラス(System名前空間) 使用ライブラリ:Int32構造体(System名前空間) 使用ライブラリ:Decimal構造体(System名前空間) 関連TIPS:数値のデータ型を明示的に指定するには? |
|
||||||||||||
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


