.NET TIPS

数値の切り捨て/切り上げを行うには?[C#、VB]

デジタルアドバンテージ 一色 政彦
2008/02/07

 数値の小数点以下の端数を切り捨てるにはMathクラス(System名前空間)の静的メソッドFloorを使い、切り上げるには静的メソッドCeilingを使う。

 ちなみに、“Floor”は「床」を意味し、“Ceiling”は「天井」を意味する英単語だ。そのイメージから、端数をより小さい値に切り捨てるならFloorメソッド、より大きい値に切り上げるならCeilingメソッドと覚えておけばよいだろう。

 本稿ではこれらのメソッドを利用する方法を紹介する。

 そのMath.Floor/Math.Ceilingメソッドのシグネチャは次のとおりだ。

Math.Floor (Decimal)

Math.Ceiling (Decimal)

 第1パラメータには切り捨て/切り上げを行うDecimal型(.NET Framework 2.0以降*1)もしくはDouble型の数値を指定する。

 戻り値は、切り捨て/切り上げられたDecimal型もしくはDouble型の整数値となる。

*1 .NET Framework 2.0以降ではDecimal型が使えるが、.NET Framework 1.xでは常にDouble型を使う必要がある。

 次のコードはMath.Floor/Math.Ceilingメソッドを使用したコンソール・アプリケーションのサンプル・プログラムである。このプログラムでは「正の数値の切り捨て/切り上げ」を行っている。

using System;

class Program
{
  static void Main(string[] args)
  {
    // 正の数値の「切り捨て/切り上げ」
    Console.WriteLine("正の数値の切り捨て/切り上げ");

    decimal plusFloor15 = Math.Floor(1.5m);
    Console.WriteLine(plusFloor15); // 出力:1

    decimal plusCeiling15 = Math.Ceiling(1.5m);
    Console.WriteLine(plusCeiling15); // 出力:2
  }
}
Module Module1

  Sub Main()
    ' 正の数値の「切り捨て/切り上げ」
    Console.WriteLine("正の数値の切り捨て/切り上げ")

    Dim plusFloor15 As Decimal = Math.Floor(1.5D)
    Console.WriteLine(plusFloor15) ' 出力:1

    Dim plusCeiling15 As Decimal = Math.Ceiling(1.5D)
    Console.WriteLine(plusCeiling15) ' 出力:2
  End Sub

End Module
正の数値の切り捨て/切り上げを行うサンプル・プログラム(上:C#、下:VB)
パラメータに指定した数値の後ろに付いているサフィックス(C#の「m」や、VBの「D」)は、数値のデータ型を明示するためのものだ。詳しくは「TIPS:数値のデータ型を明示的に指定するには?」を参照してほしい。

●小数点第2位以下での切り捨て/切り上げ

 Math.Floor/Math.Ceilingメソッドは、「TIPS:数値を四捨五入するには?」で紹介したMath.Roundメソッドと異なり「小数点第何位までを求めるか」という指定ができない。つまり小数点第2位以下の位で数値の切り捨て/切り上げを行うことはできず、常に整数値に切り捨て/切り上げが行われる。

 そこで、例えば小数点第2位で切り捨て/切り上げしたい場合には、いったん数値を10倍して小数点の位置を動かしたうえで切り捨て/切り上げを行い、その後10で割って小数点の位置を戻す、というような小数点のけたをずらす処理が必要となる。例えば次のコードのようになる。

// 小数点第2位で「正の数値」の切り捨て/切り上げ
decimal dotAlign = 1.25m;
dotAlign *= 10; // 小数点の位置を右に1けたずらす(12.5m)
dotAlign = Math.Floor(dotAlign);              // (12.0m)
dotAlign /= 10; // 小数点の位置を左に1けた戻す  (1.20m)
Console.WriteLine(dotAlign); // 出力:1.2
' 小数点第2位で「正の数値」の切り捨て/切り上げ
Dim dotAlign As Decimal = 1.25D
dotAlign *= 10 ' 小数点の位置を右に1けたずらす(12.5D)
dotAlign = Math.Floor(dotAlign)              ' (12.0D)
dotAlign /= 10 ' 小数点の位置を左に1けた戻す  (1.20D)
Console.WriteLine(dotAlign) ' 出力:1.2
小数点第2位以下の位で数値の切り捨て/切り上げを行うコード(上:C#、下:VB)

●負の数値の端数の切り捨て/切り上げ

 最後に「負」の数値の端数を切り捨て/切り上げを行った場合の例を示しておこう。

// 「負の数値」の切り捨て/切り上げ
Console.WriteLine("負の数値の切り捨て/切り上げ");

decimal minusFloor15 = Math.Floor(-1.5m);
Console.WriteLine(minusFloor15); // 出力:-2

decimal minusCeiling15 = Math.Ceiling(-1.5m);
Console.WriteLine(minusCeiling15); // 出力:-1
' 「負の数値」の切り捨て/切り上げ
Console.WriteLine("負の数値の切り捨て/切り上げ")

Dim minusFloor15 As Decimal = Math.Floor(-1.5D)
Console.WriteLine(minusFloor15) ' 出力:-2

Dim minusCeiling15 As Decimal = Math.Ceiling(-1.5D)
Console.WriteLine(minusCeiling15) ' 出力:-1
負の数値の切り捨て/切り上げを行うサンプル・プログラム(上:C#、下:VB)

 このコードの実行結果を見ると分かるように、負の数値の「-1.5」を切り捨てると(Floor)、「-2」という値が得られ、切り上げると(Ceiling)「-1」という値が得られる。End of Article

カテゴリ:クラス・ライブラリ 処理対象:数値関数
使用ライブラリ:Mathクラス(System名前空間)
使用ライブラリ:Double構造体(System名前空間)
使用ライブラリ:Decimal構造体(System名前空間)
関連TIPS:数値のデータ型を明示的に指定するには?
関連TIPS:数値を四捨五入するには?

この記事と関連性の高い別の.NET TIPS
数値を四捨五入するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事
  • エンドユーザーの言語設定を取得するには? (2014/10/23)
     エンドユーザーの言語設定を取得する方法はいくつかある。それらの方法で得られるものは何か、どの方法を使えばよいのかを本稿では解説する
  • WPF:DataGridなどにデータをソートして表示する (2014/10/21)
     WPFアプリでDataGridコントロールやListViewコントロールに表示されるデータを、プログラムコードの側からソートして表示する方法を解説する
  • 第1回 Forguncyに触ってみよう (2014/10/15)
     「Excel方眼紙」の「方眼紙」をもじった名前で話題となったForguncyの正式版がリリース。Forguncy連載スタート
  • WPF:リボンUIを実装するには? (2014/10/14)
     Windowsエクスプローラーなど、最近ではリボンを使用したアプリをよく目にするようになった。リボンを持ったWPFアプリを構築する方法を解説する
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ


- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る
- PR -

ホワイトペーパーTechTargetジャパン

ソリューションFLASH

「ITmedia マーケティング」新着記事

第3回 CCCM導入――実装の5ステップとその注意点
第2回では、クロスチャネル・キャンペーンマネジメント(以下、CCCM)導入における最初の...

レイ・カズン、1年間でEC年間売り上げ額が約2倍に拡大
ファッションブランド「Ray Cassin」を提供するレイ・カズンは10月22日、この1年間でEC事...

ベーシック、中小企業向け無料マーケティングオートメーションツール「Homeup!」ベータ版をリリース
創造カンパニーを掲げるベーシックは10月22日、中小企業をターゲットにした無料マーケテ...