此页面有用吗?
您对此内容的反馈非常重要。 请告诉我们您的想法。
更多反馈?
1500 个剩余字符
导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

Decimal 结构

2013/12/13

表示十进制数。

Namespace:  System
程序集:  mscorlib(位于 mscorlib.dll 中)

public struct Decimal : IComparable, IComparable<decimal>, 
	IConvertible, IEquatable<decimal>, IFormattable

Decimal 类型公开以下成员。

  名称说明
公共方法Decimal(Double)Decimal 的新实例初始化为指定的双精度浮点数的值。
公共方法Decimal(Int32)Decimal 的新实例初始化为指定的 32 位有符号整数值。
公共方法Decimal(Int32[])Decimal 的新实例初始化为以二进制表示的、包含在指定数组中的十进制值。
公共方法Decimal(Int64)Decimal 的新实例初始化为指定的 64 位有符号整数值。
公共方法Decimal(Single)Decimal 的新实例初始化为指定单精度浮点数字的值。
公共方法Decimal(UInt32)Decimal 的新实例初始化为指定的 32 位无符号整数值。
公共方法Decimal(UInt64)Decimal 的新实例初始化为指定的 64 位无符号整数值。
公共方法Decimal(Int32, Int32, Int32, Boolean, Byte)用指定实例构成部分的参数来初始化 Decimal 的新实例。
返回顶部

  名称说明
公共方法静态成员Add两个指定的 Decimal 值相加。
公共方法静态成员Ceiling返回大于或等于指定的十进制数的最小整数值。
公共方法静态成员Compare比较两个指定的 Decimal 值,并返回一个整数,该整数指示第一个值是大于、小于还是等于第二个值。
公共方法CompareTo(Decimal)将此实例与指定的 Decimal 对象进行比较,并返回一个整数,指示此实例的值是大于、小于还是等于指定的 Decimal 的值。
公共方法CompareTo(Object)将此实例与指定的 Object 进行比较,并返回一个整数,指示此实例的值是大于、小于还是等于指定的 Object 的值。
公共方法静态成员Divide两个指定的 Decimal 值相除。
公共方法Equals(Decimal)返回一个值,该值指示此实例和指定的 Decimal 对象是否表示相同的值。
公共方法Equals(Object)返回一个值,该值指示此实例和指定的 Object 是否表示相同的类型和值。 (重写 ValueType.Equals(Object)。)
公共方法静态成员Equals(Decimal, Decimal)返回一个值,该值指示 Decimal 的两个指定实例是否表示同一个值。
受保护的方法Finalize允许 Object 在垃圾回收器回收该对象之前尝试释放资源并执行其他清理操作。 (从 Object 继承。)
公共方法静态成员Floor将指定的 Decimal 数字向负无穷方向舍入为最接近的整数。
公共方法静态成员GetBitsDecimal 的指定实例的值转换为其等效的二进制表示形式。
公共方法GetHashCode返回此实例的哈希代码。 (重写 ValueType.GetHashCode()。)
公共方法GetType获取当前实例的 Type (从 Object 继承。)
公共方法GetTypeCode返回值类型 DecimalTypeCode
受保护的方法MemberwiseClone创建当前 Object 的浅表副本。 (从 Object 继承。)
公共方法静态成员Multiply两个指定的 Decimal 值相乘。
公共方法静态成员Negate返回指定的 Decimal 值乘以 -1 的结果。
公共方法静态成员Parse(String)将数字的字符串表示形式转换为它的等效 Decimal 表示形式。
公共方法静态成员Parse(String, NumberStyles)将指定样式的数字的字符串表示形式转换为它的等效 Decimal
公共方法静态成员Parse(String, IFormatProvider)使用指定的区域性特定的格式信息将数字的字符串表示形式转换为它的 Decimal 等效项。
公共方法静态成员Parse(String, NumberStyles, IFormatProvider)使用指定样式和区域性特定格式将数字的字符串表示形式转换为其 Decimal 等效项。
公共方法静态成员Remainder计算两个 Decimal 值相除后的余数。
公共方法静态成员RoundDecimal 值舍入到指定的小数位数。
公共方法静态成员Subtract从一个 Decimal 值中减去指定的另一个这种类型的值。
公共方法静态成员ToByte将指定的 Decimal 的值转换为等效的 8 位无符号整数。
公共方法静态成员ToDouble将指定的 Decimal 的值转换为等效的双精度浮点数。
公共方法静态成员ToInt16将指定的 Decimal 值转换为等效的 16 位有符号整数。
公共方法静态成员ToInt32将指定的 Decimal 值转换为等效的 32 位有符号整数。
公共方法静态成员ToInt64将指定的 Decimal 值转换为等效的 64 位有符号整数。
公共方法静态成员ToSByte将指定的 Decimal 值转换为等效的 8 位有符号整数。
公共方法静态成员ToSingle将指定的 Decimal 的值转换为等效的单精度浮点数字。
公共方法ToString()将此实例的数值转换为其等效的字符串表示形式。 (重写 ValueType.ToString()。)
公共方法ToString(IFormatProvider)使用指定的区域性特定格式设置信息,将此实例的数值转换为它的等效字符串表示形式。
公共方法ToString(String)使用指定的格式,将此实例的数值转换为它的等效字符串表示形式。
公共方法ToString(String, IFormatProvider)使用指定的格式和区域性特定格式设置信息,将此实例的数值转换为它的等效字符串表示形式。
公共方法静态成员ToUInt16将指定的 Decimal 的值转换为等效的 16 位无符号整数。
公共方法静态成员ToUInt32将指定的 Decimal 的值转换为等效的 32 位无符号整数。
公共方法静态成员ToUInt64将指定的 Decimal 的值转换为等效的 64 位无符号整数。
公共方法静态成员Truncate返回指定的 Decimal 的整数位,所有小数位均被放弃。
公共方法静态成员TryParse(String, Decimal)将数字的字符串表示形式转换为它的等效 Decimal 表示形式。一个指示转换是否成功的返回值。
公共方法静态成员TryParse(String, NumberStyles, IFormatProvider, Decimal)使用指定样式和区域性特定格式将数字的字符串表示形式转换为其 Decimal 等效项。一个指示转换是否成功的返回值。
返回顶部

  名称说明
公共运算符静态成员Addition两个指定的 Decimal 值相加。
公共运算符静态成员DecrementDecimal 操作数减 1。
公共运算符静态成员Division两个指定的 Decimal 值相除。
公共运算符静态成员Equality返回一个值,该值指示 Decimal 的两个实例是否相等。
公共运算符静态成员Explicit(Decimal to Single)Decimal 转换为单精度浮点数字。
公共运算符静态成员Explicit(Decimal to SByte)Decimal 转换成 8 位有符号整数。
公共运算符静态成员Explicit(Decimal to Int64)Decimal 转换成 64 位有符号的整数。
公共运算符静态成员Explicit(Decimal to UInt64)Decimal 转换成 64 位无符号整数。
公共运算符静态成员Explicit(Decimal to UInt32)Decimal 转换成 32 位无符号整数。
公共运算符静态成员Explicit(Decimal to UInt16)Decimal 转换成 16 位无符号整数。
公共运算符静态成员Explicit(Decimal to Char)Decimal 转换为 Unicode 字符。
公共运算符静态成员Explicit(Decimal to Byte)Decimal 转换为 8 位无符号整数。
公共运算符静态成员Explicit(Decimal to Double)Decimal 转换为双精度浮点数。
公共运算符静态成员Explicit(Decimal to Int32)Decimal 转换成 32 位有符号的整数。
公共运算符静态成员Explicit(Decimal to Int16)Decimal 转换成 16 位有符号的整数。
公共运算符静态成员Explicit(Double to Decimal)将双精度浮点数转换为 Decimal
公共运算符静态成员Explicit(Single to Decimal)将单精度浮点数字转换为 Decimal
公共运算符静态成员GreaterThan返回一个值,该值指示指定的 Decimal 是否大于另一个指定的 Decimal
公共运算符静态成员GreaterThanOrEqual返回一个值,该值指示指定的 Decimal 是否大于等于另一个指定的 Decimal
公共运算符静态成员Implicit(Byte to Decimal)将 8 位无符号整数转换成 Decimal
公共运算符静态成员Implicit(Char to Decimal)将 Unicode 字符转换为 Decimal
公共运算符静态成员Implicit(Int16 to Decimal)将 16 位有符号的整数转换成 Decimal
公共运算符静态成员Implicit(Int32 to Decimal)将 32 位有符号的整数转换成 Decimal
公共运算符静态成员Implicit(Int64 to Decimal)将 64 位有符号的整数转换成 Decimal
公共运算符静态成员Implicit(SByte to Decimal)将 8 位有符号整数转换成 Decimal
公共运算符静态成员Implicit(UInt16 to Decimal)将 16 位无符号的整数转换成 Decimal
公共运算符静态成员Implicit(UInt32 to Decimal)将 32 位无符号的整数转换成 Decimal
公共运算符静态成员Implicit(UInt64 to Decimal)将 64 位无符号的整数转换成 Decimal
公共运算符静态成员IncrementDecimal 操作数增加 1。
公共运算符静态成员Inequality返回一个值,该值指示 Decimal 的两个实例是否相等。
公共运算符静态成员LessThan返回一个值,该值指示指定的 Decimal 是否小于另一个指定的 Decimal
公共运算符静态成员LessThanOrEqual返回一个值,该值指示指定的 Decimal 是小于还是等于另一个指定的 Decimal
公共运算符静态成员Modulus返回两个指定 Decimal 值相除所得的余数。
公共运算符静态成员Multiply两个指定的 Decimal 值相乘。
公共运算符静态成员Subtraction两个指定的 Decimal 值相减。
公共运算符静态成员UnaryNegation对指定 Decimal 操作数的值求反。
公共运算符静态成员UnaryPlus返回 Decimal 操作数的值(操作数符号不变)。
返回顶部

  名称说明
公共字段静态成员MaxValue表示 Decimal 的最大可能值。该字段是常数且为只读。
公共字段静态成员MinusOne表示数字负一 (-1)。
公共字段静态成员MinValue表示 Decimal 的最小可能值。该字段是常数且为只读。
公共字段静态成员One表示数字一 (1)。
公共字段静态成员Zero表示数字零 (0)。
返回顶部

  名称说明
显式接口实现私有方法IConvertible.ToBoolean基础结构。 有关此成员的说明,请参见 IConvertible.ToBoolean
显式接口实现私有方法IConvertible.ToByte基础结构。 有关此成员的说明,请参见 IConvertible.ToByte
显式接口实现私有方法IConvertible.ToChar基础结构。 不支持此转换。尝试使用此方法将引发 InvalidCastException
显式接口实现私有方法IConvertible.ToDateTime基础结构。 不支持此转换。尝试使用此方法将引发 InvalidCastException
显式接口实现私有方法IConvertible.ToDecimal基础结构。 有关此成员的说明,请参见 IConvertible.ToDecimal
显式接口实现私有方法IConvertible.ToDouble基础结构。 有关此成员的说明,请参见 IConvertible.ToDouble
显式接口实现私有方法IConvertible.ToInt16基础结构。 有关此成员的说明,请参见 IConvertible.ToInt16
显式接口实现私有方法IConvertible.ToInt32基础结构。 有关此成员的说明,请参见 IConvertible.ToInt32
显式接口实现私有方法IConvertible.ToInt64基础结构。 有关此成员的说明,请参见 IConvertible.ToInt64
显式接口实现私有方法IConvertible.ToSByte基础结构。 有关此成员的说明,请参见 IConvertible.ToSByte
显式接口实现私有方法IConvertible.ToSingle基础结构。 有关此成员的说明,请参见 IConvertible.ToSingle
显式接口实现私有方法IConvertible.ToType基础结构。 有关此成员的说明,请参见 IConvertible.ToType
显式接口实现私有方法IConvertible.ToUInt16基础结构。 有关此成员的说明,请参见 IConvertible.ToUInt16
显式接口实现私有方法IConvertible.ToUInt32基础结构。 有关此成员的说明,请参见 IConvertible.ToInt32
显式接口实现私有方法IConvertible.ToUInt64基础结构。 有关此成员的说明,请参见 IConvertible.ToInt64
返回顶部

Decimal 值类型表示介于 +79,228,162,514,264,337,593,543,950,335 到 -79,228,162,514,264,337,593,543,950,335 之间的十进制数字。Decimal 值类型适用于要求使用大量有效的整数及小数位数并且没有舍入错误的财务计算。Decimal 类型不会消除对舍入的需要,而是将因舍入而导致的错误降到最少。例如,下面的代码产生结果 0.9999999999999999999999999999 而不是 1。


decimal dividend = Decimal.One;
decimal divisor = 3;
// The following displays 0.9999999999999999999999999999
outputBlock.Text += dividend / divisor * divisor + "\n";


当将除法和乘法的结果传递至 Round 方法时,该结果的精度不会有损失,如下面的代码所示。


decimal dividend = Decimal.One;
decimal divisor = 3;
// The following displays 1.00
outputBlock.Text += Math.Round(dividend / divisor * divisor, 2) + "\n";


十进制数是由符号、数值和比例因子组成的浮点值,数值的每一位的范围都是 0 到 9,比例因子指示分隔数值的整数和小数部分的浮点小数点的位置。

Decimal 值的二进制表示形式由 1 位符号、96 位整数以及比例因子组成,比例因子用作 96 位整数的除数并指定整数的哪一部分为小数。比例因子隐式地定为数字 10 的幂,指数范围从 0 到 28。因此,Decimal 值的二进制表示的形式为((-296 至 296) / 10(0 到 28)),其中 -296-1 等于 MinValue,296-1 等于 MaxValue

比例因子还保留 Decimal 数字中的所有尾随零。在算术或比较运算中,尾随零并不影响 Decimal 数字的值。但是,如果应用了正确的格式字符串,则可由 ToString 方法显示尾随零。

转换注意事项

此类型提供将 Decimal 值转换为 SByteInt16Int32Int64ByteUInt16UInt32UInt64 及其反向转换的方法。从这些整型到 Decimal 的转换属于扩大转换,不会丢失信息或引发异常。

Decimal 到任意整型的转换属于收缩转换,会将 Decimal 值向零舍入为最接近的整数值。某些语言(如 C#)也支持从 Decimal 值到 Char 值的转换。如果无法以目标类型表示这些转换的结果,则会引发 OverflowException

Decimal 类型也提供将 Decimal 值转换为 SingleDouble 及其反向转换的方法。从 DecimalSingleDouble 的转换属于收缩转换,可能会丢失精度,但不会丢失所转换值的数量大小信息。此类转换不会引发异常。

如果从 SingleDoubleDecimal 的转换的结果无法表示为 Decimal,则将引发 OverflowException

实现的接口

此类型实现 IComparableIComparable<T>IFormattableIConvertible 接口。使用 Convert 类进行转换,而不是使用此类型的 IConvertible 显式接口成员实现。

下面的代码示例演示了 Decimal 的用法。


/// <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";
   }
}


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

此类型的所有成员都是线程安全的。看似修改了实例状态的成员实际上返回一个用新值初始化的新实例。正如对任何其他类型一样,对于包含此类型的实例的共享变量,也必须通过锁定来保护对其进行的读写,以保证实现线程安全。

警告说明警告:

在所有的硬件平台上都分配该类型的一个实例不是线程安全的,因为该实例的二进制表示形式可能太大,无法在单个原子操作中分配。

显示:
© 2015 Microsoft