要查看英语原文,请勾选“英语”复选框。也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

Decimal 结构

表示十进制数。

命名空间:  System
程序集:  mscorlib(在 mscorlib.dll 中)

[ComVisibleAttribute(true)]
public struct Decimal : IFormattable, IComparable, 
	IConvertible, IComparable<decimal>, IEquatable<decimal>

Decimal 类型公开以下成员。

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

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

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

  名称说明
公共字段静态成员受 Silverlight for Windows Phone 支持受 Xbox 360 支持MaxValue表示 Decimal 的最大可能值。 该字段是常数且为只读。
公共字段静态成员受 Silverlight for Windows Phone 支持受 Xbox 360 支持MinusOne表示数字负一 (-1)。
公共字段静态成员受 Silverlight for Windows Phone 支持受 Xbox 360 支持MinValue表示 Decimal 的最小可能值。 该字段是常数且为只读。
公共字段静态成员受 Silverlight for Windows Phone 支持受 Xbox 360 支持One表示数字一 (1)。
公共字段静态成员受 Silverlight for Windows Phone 支持受 Xbox 360 支持Zero表示数字零 (0)。
页首

  名称说明
显式接口实现私有方法受 Silverlight for Windows Phone 支持受 Xbox 360 支持IConvertible.ToBoolean基础结构。有关此成员的说明,请参见 IConvertible.ToBoolean
显式接口实现私有方法受 Silverlight for Windows Phone 支持受 Xbox 360 支持IConvertible.ToByte基础结构。有关此成员的说明,请参见 IConvertible.ToByte
显式接口实现私有方法受 Silverlight for Windows Phone 支持受 Xbox 360 支持IConvertible.ToChar基础结构。不支持此转换。 尝试使用此方法将引发 InvalidCastException
显式接口实现私有方法受 Silverlight for Windows Phone 支持受 Xbox 360 支持IConvertible.ToDateTime基础结构。不支持此转换。 尝试使用此方法将引发 InvalidCastException
显式接口实现私有方法受 Silverlight for Windows Phone 支持受 Xbox 360 支持IConvertible.ToDecimal基础结构。有关此成员的说明,请参见 IConvertible.ToDecimal
显式接口实现私有方法受 Silverlight for Windows Phone 支持受 Xbox 360 支持IConvertible.ToDouble基础结构。有关此成员的说明,请参见 IConvertible.ToDouble
显式接口实现私有方法受 Silverlight for Windows Phone 支持受 Xbox 360 支持IConvertible.ToInt16基础结构。有关此成员的说明,请参见 IConvertible.ToInt16
显式接口实现私有方法受 Silverlight for Windows Phone 支持受 Xbox 360 支持IConvertible.ToInt32基础结构。有关此成员的说明,请参见 IConvertible.ToInt32
显式接口实现私有方法受 Silverlight for Windows Phone 支持受 Xbox 360 支持IConvertible.ToInt64基础结构。有关此成员的说明,请参见 IConvertible.ToInt64
显式接口实现私有方法受 Silverlight for Windows Phone 支持受 Xbox 360 支持IConvertible.ToSByte基础结构。有关此成员的说明,请参见 IConvertible.ToSByte
显式接口实现私有方法受 Silverlight for Windows Phone 支持受 Xbox 360 支持IConvertible.ToSingle基础结构。有关此成员的说明,请参见 IConvertible.ToSingle
显式接口实现私有方法受 Silverlight for Windows Phone 支持受 Xbox 360 支持IConvertible.ToType基础结构。有关此成员的说明,请参见 IConvertible.ToType
显式接口实现私有方法受 Silverlight for Windows Phone 支持受 Xbox 360 支持IConvertible.ToUInt16基础结构。有关此成员的说明,请参见 IConvertible.ToUInt16
显式接口实现私有方法受 Silverlight for Windows Phone 支持受 Xbox 360 支持IConvertible.ToUInt32基础结构。有关此成员的说明,请参见 IConvertible.ToInt32
显式接口实现私有方法受 Silverlight for Windows Phone 支持受 Xbox 360 支持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";
   }
}


Silverlight

受以下版本支持:5、4、3

Silverlight for Windows Phone

受以下版本支持:Windows Phone OS 7.1、Windows Phone OS 7.0

XNA Framework

受以下版本支持:Xbox 360、Windows Phone OS 7.0

有关 Silverlight 支持的操作系统和浏览器的列表,请参见 支持的操作系统和浏览器

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

警告说明警告:

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

社区附加资源

添加
显示: