C# での浮動小数点 vs 倍精度 vs 10 進数
このチュートリアルでは、C# の Float、Double、および Decimal データ型の類似点と相違点について説明します。
C# の Float データ型
Float データ型は浮動小数点値を C# に格納します。float
キーワードは、float 変数を宣言するために使用されます。初期化中に f
指定子を使用して、値が浮動小数点値であることをコンパイラーに通知する必要があります。浮動小数点変数のサイズは 32 ビット
です。これは、-3.402823e38
から +3.402823e38
までの値を格納できることを意味します。float 変数の精度は C# で 7
桁です。次のコード例は、C# で float 変数を宣言する方法を示しています。
using System;
namespace data_types {
static void Main(string[] args) {
float fval = 100.0f / 3;
Console.WriteLine(fval);
}
}
}
出力:
33.33333
フロート変数 fval
を float
キーワードと C# の f
指定子で初期化しました。出力された出力は、fval
の精度が 7
桁のみであることを示しています。
C# の Double データ型
Double データ型は浮動小数点値も C# に格納します。double
キーワードは、double 変数を宣言するために使用されます。初期化中に d
指定子を使用して、値が double 値であることをコンパイラーに通知する必要があります。double 変数のサイズは 64 ビット
であり、-1.79769313486232e308
から +1.79769313486232e308
までの値を格納できることを意味します。double 変数の精度は C# で 15
桁です。次のコード例は、C# で double 変数を宣言する方法を示しています。
using System;
namespace data_types {
static void Main(string[] args) {
double dval = 100.0d / 3;
Console.WriteLine(dval);
}
}
}
出力:
33.3333333333333
C# では、double 変数 dval
を double
キーワードと d
指定子で初期化しました。出力された出力は、dval
の精度が 15
桁であることを示しています。
C# の Decimal データ型
Decimal データ型は、浮動小数点値も C# に格納します。decimal
キーワードは、10 進変数を宣言するために使用されます。初期化中に M
指定子を使用して、値が 10 進値であることをコンパイラーに通知する必要があります。10 進変数のサイズは 128 ビット
で、-79,228,162,514,264,337,593,543,950,335
から+79,228,162,514,264,337,593,543,950,335
までの値を格納できることを意味します。10 進変数の精度は、C# で 29
桁です。次のコード例は、C# で 10 進変数を宣言する方法を示しています。
using System;
namespace data_types {
static void Main(string[] args) {
decimal dval = 100.0M / 3;
Console.WriteLine(dval);
}
}
}
出力:
33.333333333333333333333333333
10 進変数 dval
を decimal
キーワードと C# の M
指定子で初期化しました。出力された出力は、dval
の精度が 29
桁であることを示しています。
C# での浮動小数点 vs 倍精度 vs10 進数
float
および double
データ型は、decimal
データ型よりも精度とサイズが低くなります。したがって、金融取引のように多数の有効数字を必要とする機密情報を記録するには、10 進数
データ型をお勧めします。ただし、decimal
データ型は float
および double
データ型よりもはるかに低速です。したがって、すでに近似値であり、非常に高い精度を必要としない科学的値を扱う場合は常に、必要に応じて float
または double
データ型を使用できます。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn