C#中的decimal类型



decimal(C#)

decimal 关键字指示 128 位数据类型。 与浮点型相比,decimal 类型具有更高的精度和更小的范围,这使它适合于财务和货币计算。decimal 类型的大致范围和精度如下所示。

类型

大致范围

       精度                       

.NET Framework 类型

decimal

     (-7.9 x 1028 - 7.9 x 1028) / (100 - 28)

      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 和浮点型将导致编译错误。

下面的示例尝试添加doubledecimal 变量,这会导致编译器错误。

double dub = 9;

Console.WriteLine(dec + dub);   // error:"+"运算符不能用于连接decimal和double类型

Console.WriteLine(dec + (decimal)dub);  //正确

Console.WriteLine((double)dec + dub);  // 正确


在下面的示例中,同一个表达式中混合使用了decimal 和 int计算结果为 decimal 类型。没有问题

publicclass TestDecimal

{

   static void Main()

    {

       decimal d = 9.1m;

       int y = 3;

        Console.WriteLine(d + y);// 结果会被隐式转换为decimal类型

    }

}

// 输出12.1


设置十进制输出的格式

可以通过使用 String.Format 方法或Console.Write 方法(其调用String.Format())来设置结果的格式。 货币格式是使用标准货币格式字符串“C”或“c”指定的,如下示例所示:

在此示例中,通过使用货币格式字符串来设置输出的格式。请注意,x 被舍入,因为其小数位数超出了 $0.99。表示最大精确位数的变量 y 严格按照正确的格式显示。

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

*/


完!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值