decimal 关键字表示 128 位数据类型。同浮点型相比,decimal 类型具有更高的精度和更小的范围,这使它适合于财务和货币计算。decimal 类型的大致范围和精度如下表所示。
      
            | 类型 | 大致范围 | 精度 | .NET Framework 类型 | 
          | 
              decimal
             | ±1.0 × 10e−28 至 ±7.9 × 10e28 | 28 到 29 位有效位 | 
              System.Decimal
             | 
 标识符
标识符
        如果希望实数被视为 decimal 类型,请使用后缀 m 或 M,例如:
        |  |  复制代码 | 
|---|
| 
          decimal myMoney = 300.5m; | 
如果没有后缀 m,数字将被视为 double 类型,从而导致编译器错误。
        转换
转换
        整型被隐式转换为 decimal,其计算结果为 decimal。因此,可以用整数初始化十进制变量而不使用后缀,如下所示:
        |  |  复制代码 | 
|---|
| 
          decimal myMoney = 300; | 
在浮点型和 decimal 类型之间不存在隐式转换;因此,必须使用强制转换在这两种类型之间进行转换。例如:
        |  |  复制代码 | 
|---|
| 
          decimal myMoney = 99.9m;
double x = (double)myMoney;
myMoney = (decimal)x; | 
还可以在同一表达式中混合使用 decimal 和数值整型。但是,不进行强制转换就混合使用 decimal 和浮点型将导致编译错误。 
        有关隐式数值转换的更多信息,请参见隐式数值转换表(C# 参考)。
        有关显式数值转换的更多信息,请参见显式数值转换表(C# 参考)。
        格式化十进制输出
格式化十进制输出
        可以通过使用 String.Format 方法或 System.Console.Write 方法(它调用 String.Format())来格式化结果。指定货币格式时需要使用标准货币格式字符串“C”或“c”,如示例 2 所示。有关 String.Format 方法的更多信息,请参见 System.String.Format(System.String,System.Object)。
        示例
示例
      
        
          在此例中,同一个表达式中混合使用了 decimal 和 int。计算结果为 decimal 类型。
          如果试图使用下面这样的语句添加 double 和 decimal 变量:
          |  |  复制代码 | 
|---|
| double x = 9;
Console.WriteLine(d + x); // Error | 
将导致下列错误:
          
            Operator '+' cannot be applied to operands of type 'double' and 'decimal'
          
        
      
      |  |  复制代码 | 
|---|
| // keyword_decimal.cs
// decimal conversion
using System;
public class TestDecimal 
{
    static void Main () 
    {
        decimal d = 9.1m;
        int y = 3;
        Console.WriteLine(d + y);   // Result converted to decimal
    }
} | 
输出
        
      
    
      
        
          在此例中,输出用货币格式字符串格式化。注意:其中 x 被舍入,因为其小数点位置超出了 $0.99。而表示最大精确位数的变量 y 严格按照正确的格式显示。
        
      
      |  |  复制代码 | 
|---|
| // keyword_decimal2.cs
// Decimal type formatting
using System;
public class TestDecimalFormat 
{
    static void Main () 
    {
        decimal x = 0.999m;
        decimal y = 9999999999999999999999999999m;
        Console.WriteLine("My amount = {0:C}", x);
        Console.WriteLine("Your amount = {0:C}", y);
    }
} | 
输出
        |  | 
|---|
| My amount = $1.00
Your amount = $9,999,999,999,999,999,999,999,999,999.00 | 
  C# 语言规范
C# 语言规范
        有关更多信息,请参见 C# 语言规范中的以下各章节:
        - 
            1.3 类型和变量 
- 
            4.1.7 decimal 类型 
  请参见
请参见