C#で使用できるintやdecimalなどの数値型のデータ範囲についてまとめておきます。
目次
整数型
整数型には「sbyte型」「byte型」「short型」「ushort型」「int型」「uint型」「long型」「ulong型」の8種類があります。
sbyte型
sbyte型の有効なデータ(値)の範囲は「-128 ~ 127」になります。
sbyte型のサイズは「符号付き8ビット整数」.NET型は「System.SByte」です。
byte型
byte型の有効なデータ(値)の範囲は「0 ~ 255」になります。
byte型のサイズは「符号なし 8 ビット整数」.NET型は「System.Byte」です。
short型
short型の有効なデータ(値)の範囲は「-32,768 ~ 32,767」になります。
short型のサイズは「符号付き 16 ビット整数」.NET型は「System.Int16」です。
ushort型
ushort型の有効なデータ(値)の範囲は「0 ~ 65,535」になります。
ushort型のサイズは「符号なし 16 ビット整数」.NET型は「System.UInt16」です。
int型
int型の有効なデータ(値)の範囲は「-2,147,483,648 ~ 2,147,483,647」になります。
int型のサイズは「符号付き 32 ビット整数」.NET型は「System.Int32」です。
uint型
uint型の有効なデータ(値)の範囲は「0 ~ 4,294,967,295」になります。
uint型のサイズは「符号なし 32 ビット整数」.NET型は「System.UInt32」です。
long型
long型の有効なデータ(値)の範囲は「-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807」になります。
long型のサイズは「符号付き 64 ビット整数」.NET型は「System.Int64」です。
ulong型
ulong型の有効なデータ(値)の範囲は「0 ~ 18,446,744,073,709,551,615」になります。
ulong型のサイズは「符号なし 64 ビット整数」.NET型は「System.UInt64」です。
浮動小数点数値型
浮動小数点数型には「float型」「double型」「decimal型」の3種類があります。
float型
float型の有効なデータ(値)の範囲は「±1.5 x 10−45 ~ ±3.4 x 1038」になります。有効桁数は「~6 ~ 9 桁」です。
float型のサイズは「4 バイト」.NET型は「System.Single」です。
double型
double型の有効なデータ(値)の範囲は「±5.0 × 10−324 ~ ±1.7 × 10308」になります。有効桁数は「~15 ~ 17 桁」です。
double型のサイズは「8 バイト」.NET型は「System.Double」です。
decimal型
decimal型の有効なデータ(値)の範囲は「±1.0 x 10-28 ~ ±7.9228 x 1028」になります。有効桁数は「28 ~ 29 桁の数字」です。
decimal型のサイズは「16 バイト」.NET型は「System.Decimal」です。
数値型のデータ範囲を取得するサンプルプログラム
数値データ型の最小値と最大値を取得してコンソールに出力するプログラムのサンプルです。
ソースコード
数値型の定義情報を格納するクラスを作成して、sbyte型~decimal型までの値を設定してコンソールに出力します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
using System; using System.Collections.Generic; using System.Reflection; namespace ConsoleApp1 { class Program { static void Main(string[] args) { // 数値データ型の範囲(最小値 ~ 最大値)をコンソールに出力 ConsoleWriteNumericRangeText(); Console.ReadKey(); } // 数値型のタイプを保持するクラス private class NumericType { // データ型の名前(C#のキーワード) internal string Name { get; set; } // データ型(.NET Frameworkの型情報) internal Type Type { get; set; } // 数値データ型の最小値~最大値を文字列で返す public override string ToString() { // 最小値 FieldInfo minValueFieldInfo = Type.GetField("MinValue"); object minValue = minValueFieldInfo.GetValue(null); // 最大値 FieldInfo maxValueFieldInfo = Type.GetField("MaxValue"); object maxValue = maxValueFieldInfo.GetValue(null); // 数値データ型の範囲文字列 string toString = $"{Name}\t{Type.FullName}\t{minValue} ~ {maxValue}"; return toString; } } // 数値データ型の範囲(最小値 ~ 最大値)をコンソールに出力 private static void ConsoleWriteNumericRangeText() { // 数値データ型のリスト List<NumericType> numericTypes = new List<NumericType>() { // 符号付8ビット整数 new NumericType { Name = "sbyte", Type = typeof(sbyte) }, // 8ビット整数 new NumericType { Name = "byte", Type = typeof(byte) }, // 16ビット整数 new NumericType { Name = "short", Type = typeof(short) }, // 符号なし16ビット整数 new NumericType { Name = "ushort", Type = typeof(ushort) }, // 32ビット整数 new NumericType { Name = "int", Type = typeof(int) }, // 符号なし32ビット整数 new NumericType { Name = "uint", Type = typeof(uint) }, // 64ビット整数 new NumericType { Name = "long", Type = typeof(long) }, // 符号なし64ビット整数 new NumericType { Name = "ulong", Type = typeof(ulong) }, // 32ビット浮動小数点数 new NumericType { Name = "float", Type = typeof(float) }, // 64ビット浮動小数点数 new NumericType { Name = "double", Type = typeof(double) }, // 128ビット固定小数点数(10進数) new NumericType { Name = "decimal", Type = typeof(decimal) } }; foreach (NumericType numericType in numericTypes) { // 数値データ型の範囲(最小値 ~ 最大値)を取得 string typeRange = numericType.ToString(); // コンソールに出力 Console.WriteLine(typeRange); } } } } |
C#のキーワード | .NET Frameworkのデータ型 | データの範囲 |
---|---|---|
sbyte | System.SByte | -128 ~ 127 |
byte | System.Byte | 0 ~ 255 |
short | System.Int16 | -32768 ~ 32767 |
ushort | System.UInt16 | 0 ~ 65535 |
int | System.Int32 | -2147483648 ~ 2147483647 |
uint | System.UInt32 | 0 ~ 4294967295 |
long | System.Int64 | -9223372036854775808 ~ 9223372036854775807 |
ulong | System.UInt64 | 0 ~ 18446744073709551615 |
float | System.Single | -3.402823E+38 ~ 3.402823E+38 |
double | System.Double | -1.79769313486232E+308 ~ 1.79769313486232E+308 |
decimal | System.Decimal | -79228162514264337593543950335 ~ 79228162514264337593543950335 |
数値型の規定値
整数型、浮動小数点数値型ともに既定値はゼロ(0)です。
Null値の代入
整数型、浮動小数点数値型ともに値型なのでNull値を代入することはできません。
Null値を代入するには、Null許容型にする必要があります。
Null許容型は以下のように宣言することができます。
ここでは、Nullを許容するint型での例を示します。
1 2 3 4 5 |
// Null許容int型 int? nullableInt1 = null; // または Nullable<int> nullableInt2 = null; // のように宣言できます。 |