C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のDecimal.ToInt32()メソッドとは?使い方とサンプルコードを解説

C#のDecimal.ToInt32()メソッドは、指定したDecimal(10進数)型の値を、それと等価な32ビット符号付き整数(int型)に変換するための静的メソッドです。小数点以下の値は切り捨てられ、変換結果がint型の範囲外になる場合は例外がスローされます。

構文

Decimal.ToInt32()メソッドの構文は以下のとおりです。

public static int ToInt32 (decimal val);

引数「val」には、変換対象となるdecimal型の数値を指定します。戻り値として、変換後の32ビット符号付き整数(int型)が返されます。

主な特徴と注意点

  • 小数点以下は切り捨て(ゼロに近い方向への丸め)られます。

  • 変換結果がint型の範囲(-2,147,483,648 ~ 2,147,483,647)を超える場合は、OverflowExceptionがスローされます。

  • 明示的なキャスト「(int)decimalValue」と同等の動作を行います。

使用例1:基本的な変換

まずは、基本的な使用例を見てみましょう。

using System;
public class Demo {
    public static void Main(){
        Decimal val1 = 0.001m;
        Decimal val2 = 1.000m;
        Console.WriteLine("Decimal 1 = "+val1);
        Console.WriteLine("Decimal 2 = "+val2);
        int res1 = Decimal.ToInt32(val1);
        int res2 = Decimal.ToInt32(val2);
        Console.WriteLine("32ビット符号付き整数(value1)= "+res1);
        Console.WriteLine("32ビット符号付き整数(value2)= "+res2);
    }
}

実行結果

上記のコードを実行すると、次のような出力が得られます。

Decimal 1 = 0.001
Decimal 2 = 1.000
32ビット符号付き整数(value1)= 0
32ビット符号付き整数(value2)= 1

このように、「0.001」は小数点以下が切り捨てられて「0」に、「1.000」はそのまま「1」に変換されます。

使用例2:負の数を含む変換

続いて、負の数を含む場合の使用例です。

using System;
public class Demo {
    public static void Main(){
        Decimal val1 = -3.578m;
        Decimal val2 = 9.352m;
        Console.WriteLine("Decimal 1 = "+val1);
        Console.WriteLine("Decimal 2 = "+val2);
        int res1 = Decimal.ToInt32(val1);
        int res2 = Decimal.ToInt32(val2);
        Console.WriteLine("32ビット符号付き整数(value1)= "+res1);
        Console.WriteLine("32ビット符号付き整数(value2)= "+res2);
    }
}

実行結果

上記のコードを実行すると、次のような出力が得られます。

Decimal 1 = -3.578
Decimal 2 = 9.352
32ビット符号付き整数(value1)= -3
32ビット符号付き整数(value2)= 9

負の数の場合も同様に、小数点以下が切り捨てられます。「-3.578」は四捨五入ではなくゼロに近い方向へ丸められるため「-3」になり、「9.352」は「9」に変換される点に注意してください。

まとめ

Decimal.ToInt32()メソッドを使えば、decimal型の値を簡単に32ビット符号付き整数へ変換できます。ただし、小数点以下は切り捨てられること、およびint型の範囲を超える値を渡すとOverflowExceptionが発生することの2点には注意して使用しましょう。丸め処理が必要な場合は、事前にMath.Round()などで値を整えてから変換する方法も検討するとよいでしょう。

  1. C#のDecimal.ToOACurrency()メソッドとは?構文と使い方をサンプルコードで解説

    C#のDecimal.ToOACurrency()メソッドは、指定されたDecimal(10進数)の値を、64ビット符号付き整数に格納されるOLEオートメーション通貨(OLE Automation Currency)値へと変換するためのメソッドです。OLEオートメーション通貨は、小数点以下4桁を固定で持つ形式で表現され、元の値が10,000倍された整数として扱われます。そのため、変換結果はlong型(64ビット符号付き整数)として返されます。構文このメソッドの構文は以下の通りです。public static long ToOACurrency (decimal val);パラメータ「val」に

  2. C#のDecimal.Floor()メソッドの使い方を徹底解説

    概要C#のDecimal.Floor()メソッドは、指定されたDecimal型の数値を「負の無限大方向」に向かって最も近い整数へ丸める静的メソッドです。正の数であれば小数点以下がそのまま切り捨てられますが、負の数の場合はより小さい整数側へ丸められる点に注意が必要です。構文構文は以下のとおりです。public static decimal Floor (decimal val);引数valには、丸めの対象となるDecimal型の値を指定します。使用例1:正の数の場合まず、正のDecimal値に対してDecimal.Floor()メソッドを使用する例を見てみましょう。using System; p