Decimal 構造体
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
10 進数の浮動小数点数を表します。
public value class System::Decimal : IComparable, IComparable<System::Decimal>, IConvertible, IEquatable<System::Decimal>, IFormattable
public value class System::Decimal : IComparable, IComparable<System::Decimal>, IConvertible, IEquatable<System::Decimal>, IFormattable, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public value class System::Decimal : IComparable, IComparable<System::Decimal>, IConvertible, IEquatable<System::Decimal>, ISpanFormattable, System::Runtime::Serialization::IDeserializationCallback, System::Runtime::Serialization::ISerializable
public value class System::Decimal : IComparable, IComparable<System::Decimal>, IConvertible, IEquatable<System::Decimal>, IFormattable, System::Runtime::Serialization::IDeserializationCallback
public value class System::Decimal : IComparable, IConvertible, IFormattable
public value class System::Decimal : IComparable, IComparable<System::Decimal>, IEquatable<System::Decimal>, IFormattable
public struct Decimal : IComparable, IComparable<decimal>, IConvertible, IEquatable<decimal>, IFormattable
public struct Decimal : IComparable, IComparable<decimal>, IConvertible, IEquatable<decimal>, IFormattable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
public struct Decimal : IComparable, IComparable<decimal>, IConvertible, IEquatable<decimal>, ISpanFormattable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
public struct Decimal : IComparable, IComparable<decimal>, IConvertible, IEquatable<decimal>, IFormattable, System.Runtime.Serialization.IDeserializationCallback
[System.Serializable]
public struct Decimal : IComparable, IConvertible, IFormattable
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public struct Decimal : IComparable, IComparable<decimal>, IConvertible, IEquatable<decimal>, IFormattable
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public struct Decimal : IComparable, IComparable<decimal>, IConvertible, IEquatable<decimal>, IFormattable, System.Runtime.Serialization.IDeserializationCallback
public struct Decimal : IComparable, IComparable<decimal>, IEquatable<decimal>, IFormattable
type decimal = struct
interface IConvertible
interface IFormattable
type decimal = struct
interface IConvertible
interface IFormattable
interface IDeserializationCallback
interface ISerializable
type decimal = struct
interface IConvertible
interface ISpanFormattable
interface IFormattable
interface IDeserializationCallback
interface ISerializable
type decimal = struct
interface IConvertible
interface IFormattable
interface IDeserializationCallback
[<System.Serializable>]
type decimal = struct
interface IFormattable
interface IConvertible
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type decimal = struct
interface IFormattable
interface IConvertible
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type decimal = struct
interface IFormattable
interface IConvertible
interface IDeserializationCallback
type decimal = struct
interface IFormattable
Public Structure Decimal
Implements IComparable, IComparable(Of Decimal), IConvertible, IEquatable(Of Decimal), IFormattable
Public Structure Decimal
Implements IComparable, IComparable(Of Decimal), IConvertible, IDeserializationCallback, IEquatable(Of Decimal), IFormattable, ISerializable
Public Structure Decimal
Implements IComparable, IComparable(Of Decimal), IConvertible, IDeserializationCallback, IEquatable(Of Decimal), ISerializable, ISpanFormattable
Public Structure Decimal
Implements IComparable, IComparable(Of Decimal), IConvertible, IDeserializationCallback, IEquatable(Of Decimal), IFormattable
Public Structure Decimal
Implements IComparable, IConvertible, IFormattable
Public Structure Decimal
Implements IComparable, IComparable(Of Decimal), IEquatable(Of Decimal), IFormattable
- 継承
- 属性
- 実装
例
次のコード例は、Decimal の使用方法を示します。
/// <summary>
/// Keeping my fortune in Decimals to avoid the round-off errors.
/// </summary>
public ref class PiggyBank
{
protected:
Decimal MyFortune;
public:
void AddPenny()
{
MyFortune = System::Decimal::Add( MyFortune, Decimal(.01) );
}
System::Decimal Capacity()
{
return MyFortune.MaxValue;
}
Decimal Dollars()
{
return Decimal::Floor( MyFortune );
}
Decimal Cents()
{
return Decimal::Subtract( MyFortune, Decimal::Floor( MyFortune ) );
}
virtual System::String^ ToString() override
{
return MyFortune.ToString("C")+" in piggy bank";
}
};
}
/// <summary>
/// Keeping my fortune in Decimals to avoid the round-off errors.
/// </summary>
class PiggyBank {
protected decimal MyFortune;
public void AddPenny() {
MyFortune = Decimal.Add(MyFortune, .01m);
}
public decimal Capacity {
get {
return Decimal.MaxValue;
}
}
public decimal Dollars {
get {
return Decimal.Floor(MyFortune);
}
}
public decimal Cents {
get {
return Decimal.Subtract(MyFortune, Decimal.Floor(MyFortune));
}
}
public override string ToString() {
return MyFortune.ToString("C")+" in piggy bank";
}
}
' Keeping my fortune in Decimals to avoid the round-off errors.
Class PiggyBank
Protected MyFortune As Decimal
Public Sub AddPenny()
MyFortune = [Decimal].Add(MyFortune, 0.01D)
End Sub
Public ReadOnly Property Capacity() As Decimal
Get
Return [Decimal].MaxValue
End Get
End Property
Public ReadOnly Property Dollars() As Decimal
Get
Return [Decimal].Floor(MyFortune)
End Get
End Property
Public ReadOnly Property Cents() As Decimal
Get
Return [Decimal].Subtract(MyFortune, [Decimal].Floor(MyFortune))
End Get
End Property
Public Overrides Function ToString() As String
Return MyFortune.ToString("C") + " in piggy bank"
End Function
End Class
注釈
値 Decimal の型は、正の 79,228,162,514,264,337,593,543,950 の範囲の 10 進数を表します。 335 から負の 79,228,162,514,264,337,593,543,950,335。 の既定値は Decimal
0 です。 値 Decimal の型は、多数の有効な整数と小数部の数字を必要とする財務計算に適しています。丸めエラーはありません。 型 Decimal では丸めが不要です。 丸めに起因するエラーが最小限に抑えられます。 たとえば、次のコードでは、1 ではなく 0.99999999999999999999999999999999 という結果が生成されます。
using namespace System;
void main()
{
Decimal dividend = Decimal::One;
Decimal divisor = 3;
// The following displays 0.9999999999999999999999999999 to the console
Console::WriteLine(dividend/divisor * divisor);
}
decimal dividend = Decimal.One;
decimal divisor = 3;
// The following displays 0.9999999999999999999999999999 to the console
Console.WriteLine(dividend/divisor * divisor);
Dim dividend As Decimal = Decimal.One
Dim divisor As Decimal = 3
' The following displays 0.9999999999999999999999999999 to the console
Console.WriteLine(dividend/divisor * divisor)
除算と乗算の結果が メソッドに渡された場合、次のコードに示すように、結果の精度 Round は失われる可能性はありません。
using namespace System;
void main()
{
Decimal dividend = Decimal::One;
Decimal divisor = 3;
// The following displays 1.00 to the console
Console::WriteLine(Math::Round(dividend/divisor * divisor, 2));
}
decimal dividend = Decimal.One;
decimal divisor = 3;
// The following displays 1.00 to the console
Console.WriteLine(Math.Round(dividend/divisor * divisor, 2));
Dim dividend As Decimal = Decimal.One
Dim divisor As Decimal = 3
' The following displays 1.00 to the console
Console.WriteLine(Math.Round(dividend/divisor * divisor, 2))
10 進数は、符号、値の各桁の範囲が 0 から 9 の数値、および数値の整数部分と小数部を区切る浮動小数点の位置を示す拡大縮小係数で構成される浮動小数点値です。
値のバイナリ表現は、96 ビット整数で構成される 128 ビットと、10 進数の部分を指定するために使用される符号やスケーリング係数などのフラグを表す 32 ビット のフラグ セットです。 Decimal
したがって、形式の値 Decimal ((-296 から 296) / 10(0 から 28)) のバイナリ表現。ここで、-(296-1) は と等しく MinValue 、296-1 は と等しくなります MaxValue 。 値のバイナリ表現と例の詳細については、コンストラクターと メソッド Decimal に関 Decimal(Int32[]) するページを参照 GetBits してください。
拡大縮小係数では、数値の末尾のゼロも保持 Decimal されます。 末尾の 0 は、算術演算または比較演算 Decimal の数値には影響を与え "ない"。 ただし、適切な書式指定文字列が適用されている場合、メソッドによって末尾のゼロ ToString が表示される場合があります。
変換に関する考慮事項
この型は、、 の各値との間で値を変換 Decimal SByte Int16 Int32 Int64 Byte UInt16 する UInt32 メソッドを提供 UInt64 します。 これらの整数型から への変換は、情報を失わない変換や例外をスローしない Decimal 拡大変換です。
から整数型への変換は、値を最も近い整数値に丸め、0 に向かって縮小 Decimal Decimal 変換します。 C# などの一部の言語では、値から値への Decimal 変換もサポート Char されています。 これらの変換の結果を変換先の型で表できない場合は、 OverflowException 例外がスローされます。
型 Decimal には、値と 値の間で値を変換 Decimal するメソッド Single も用意 Double されています。 から または への変換は縮小変換で、精度は失われる可能性がありますが、変換された値の大きさに関する Decimal Single Double 情報は失われる可能性があります。 変換では例外はスローしません。
変換の結果を として表現できない場合は、 または から への変換によって例外 Single Double Decimal OverflowException がスローされます Decimal 。
10 進値に対する操作の実行
型は、加算、減算、除算、乗算、および一項否定などの標準的な数学 Decimal 演算をサポートします。 メソッドを呼び出すことによって、値のバイナリ表現 Decimal を直接処理 GetBits することもできます。
2 つの値を比較するには、標準の数値比較演算子を使用するか、 メソッドまたは Decimal メソッドを呼 CompareTo び出 Equals します。
クラスのメンバーを呼び出して、数値の絶対値の取得、2 つの値の最大値または最小値の決定、数値の符号の取得、数値の丸めなど、さまざまな数値演算を実行することもできます。 Math Decimal
コンストラクター
Decimal(Double) |
Decimal の新しいインスタンスを初期化し、その値を、指定した倍精度浮動小数点数に設定します。 |
Decimal(Int32) |
Decimal の新しいインスタンスを初期化し、その値を、指定した 32 ビット符号付き整数に設定します。 |
Decimal(Int32, Int32, Int32, Boolean, Byte) |
Decimal の新しいインスタンスの値を、そのインスタンスの構成部分を指定するパラメーターに従って初期化します。 |
Decimal(Int32[]) |
Decimal の新しいインスタンスの値を、指定した配列に格納されている、バイナリ形式の 10 進値に初期化します。 |
Decimal(Int64) |
Decimal の新しいインスタンスを初期化し、その値を、指定した 64 ビット符号付き整数に設定します。 |
Decimal(ReadOnlySpan<Int32>) |
Decimal の新しいインスタンスを、指定したスパンに格納されている、バイナリ形式の 10 進値に初期化します。 |
Decimal(Single) |
Decimal の新しいインスタンスを初期化し、その値を、指定した単精度浮動小数点数に設定します。 |
Decimal(UInt32) |
Decimal の新しいインスタンスを初期化し、その値を、指定した 32 ビット符号なし整数に設定します。 |
Decimal(UInt64) |
Decimal の新しいインスタンスを初期化し、その値を、指定した 64 ビット符号なし整数に設定します。 |
フィールド
MaxValue |
Decimal の最大有効値を表します。 このフィールドは定数であり、読み取り専用です。 |
MinusOne |
負の 1 (-1) を表します。 |
MinValue |
Decimal の最小有効値を表します。 このフィールドは定数であり、読み取り専用です。 |
One |
数値 1 を表します。 |
Zero |
数値 0 を表します。 |
メソッド
Add(Decimal, Decimal) |
指定した 2 つの Decimal 値を加算します。 |
Ceiling(Decimal) |
指定した 10 進数以上の数のうち、最小の整数値を返します。 |
Compare(Decimal, Decimal) |
2 つの指定した Decimal 値を比較します。 |
CompareTo(Decimal) |
指定した Decimal オブジェクトとこのインスタンスを比較し、これらの相対値の比較を返します。 |
CompareTo(Object) |
指定したオブジェクトとこのインスタンスを比較し、これらの相対値の比較を返します。 |
Divide(Decimal, Decimal) |
2 つの指定した Decimal 値を除算します。 |
Equals(Decimal) |
このインスタンスと指定した Decimal オブジェクトが同じ値を表しているかどうかを示す値を返します。 |
Equals(Decimal, Decimal) |
Decimal の指定された 2 つのインスタンスが同じ値を表しているかどうかを示す値を返します。 |
Equals(Object) |
このインスタンスと指定した Object が同じ型と値を表しているかどうかを示す値を返します。 |
Floor(Decimal) |
指定した Decimal 数を、負の無限大方向の近似整数に丸めます。 |
FromOACurrency(Int64) |
OLE オートメーション通貨値を格納している指定した 64 ビット符号付き整数を、それと等価の Decimal 値に変換します。 |
GetBits(Decimal) |
指定した Decimal のインスタンスの値を、それと等価のバイナリ形式に変換します。 |
GetBits(Decimal, Span<Int32>) |
指定した Decimal のインスタンスの値を、それと等価のバイナリ形式に変換します。 |
GetHashCode() |
このインスタンスのハッシュ コードを返します。 |
GetTypeCode() | |
Multiply(Decimal, Decimal) |
指定された 2 つの Decimal 値を乗算します。 |
Negate(Decimal) |
指定した Decimal 値に -1 を乗算した結果を返します。 |
Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider) |
指定したスタイルとカルチャ固有の書式を使用して、数値のスパン表現を等価の Decimal に変換します。 |
Parse(String) |
数値の文字列形式を、それと等価の Decimal に変換します。 |
Parse(String, IFormatProvider) |
指定したカルチャ固有の書式情報を使用して、文字列形式の数値をそれと等価の Decimal に変換します。 |
Parse(String, NumberStyles) |
指定のスタイルで表現された数値の文字列形式を、それと等価な Decimal に変換します。 |
Parse(String, NumberStyles, IFormatProvider) |
指定したスタイルとカルチャ固有の書式を使用して、文字列形式の数値をそれと等価の Decimal に変換します。 |
Remainder(Decimal, Decimal) |
2 つの Decimal 値の除算後の剰余を計算します。 |
Round(Decimal) |
10 進値を最も近い整数に丸めます。 |
Round(Decimal, Int32) |
Decimal 値を、指定した小数点以下の桁数に丸めます。 |
Round(Decimal, Int32, MidpointRounding) |
指定された丸め方法を使用して、10進値を指定した有効桁数に丸めます。 |
Round(Decimal, MidpointRounding) |
指定された丸め方法を使用して、10進値を整数に丸めます。 |
Subtract(Decimal, Decimal) |
指定した Decimal 値から、指定したもう 1 つの値を減算します。 |
ToByte(Decimal) |
指定した Decimal の値を、等価の 8 ビット符号なし整数に変換します。 |
ToDouble(Decimal) |
指定した Decimal の値を、それと等価の倍精度浮動小数点数に変換します。 |
ToInt16(Decimal) |
指定した Decimal の値を、等価の 16 ビット符号付き整数に変換します。 |
ToInt32(Decimal) |
指定した Decimal の値を、等価の 32 ビット符号付き整数に変換します。 |
ToInt64(Decimal) |
指定した Decimal の値を、等価の 64 ビット符号付き整数に変換します。 |
ToOACurrency(Decimal) |
指定した Decimal 値を、64 ビット符号付き整数に格納されるそれと等価の OLE オートメーション通貨値に変換します。 |
ToSByte(Decimal) |
指定した Decimal の値を、等価の 8 ビット符号付き整数に変換します。 |
ToSingle(Decimal) |
指定した Decimal の値を、それと等価の単精度浮動小数点数に変換します。 |
ToString() |
このインスタンスの数値を、それと等価な文字列形式に変換します。 |
ToString(IFormatProvider) |
このインスタンスの数値を、指定したカルチャ固有の書式情報を使用して、それと等価な文字列形式に変換します。 |
ToString(String) |
指定した書式を使用して、このインスタンスの数値を、それと等価な文字列形式に変換します。 |
ToString(String, IFormatProvider) |
このインスタンスの数値を、指定した書式およびカルチャ固有の書式情報を使用して、それと等価な文字列形式に変換します。 |
ToUInt16(Decimal) |
指定した Decimal の値を、等価の 16 ビット符号なし整数に変換します。 |
ToUInt32(Decimal) |
指定した Decimal の値を、等価の 32 ビット符号なし整数に変換します。 |
ToUInt64(Decimal) |
指定した Decimal の値を、等価の 64 ビット符号なし整数に変換します。 |
Truncate(Decimal) |
指定した Decimal の整数の桁を返します。小数の桁は破棄されます。 |
TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider) |
現在の 10 進数型インスタンスの値の、指定した文字スパンへの書式設定を試みます。 |
TryGetBits(Decimal, Span<Int32>, Int32) |
指定した Decimal の値を、それと等価なバイナリ形式に変換しようとします。 |
TryParse(ReadOnlySpan<Char>, Decimal) |
指定したスタイルとカルチャ固有の書式を使用して、数値のスパン表現を等価の Decimal に変換します。 戻り値は変換が成功したか失敗したかを示します。 |
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Decimal) |
指定したスタイルとカルチャ固有の書式を使用して、数値のスパン表現を等価の Decimal に変換します。 戻り値は変換が成功したか失敗したかを示します。 |
TryParse(String, Decimal) |
数値の文字列形式を、それと等価の Decimal に変換します。 戻り値は変換が成功したか失敗したかを示します。 |
TryParse(String, NumberStyles, IFormatProvider, Decimal) |
指定したスタイルとカルチャ固有の書式を使用して、文字列形式の数値をそれと等価の Decimal に変換します。 戻り値は変換が成功したか失敗したかを示します。 |
演算子
明示的なインターフェイスの実装
適用対象
スレッド セーフ
この型のすべてのメンバーはスレッド セーフです。 インスタンスの状態を変更すると思えるメンバーは、実際には新しい値で初期化された新しいインスタンスを返します。 他の型と同様に、この型のインスタンスを含む共有変数の読み取りおよび書き込みは、スレッドセーフを保証するためにロックによって保護する必要があります。