• C# 关键字之 decimal


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

    可以 String.Format 方法,或通过 System.Console.Write 方法(它会调用 String.Format()),对结果设置格式。 货币格式是使用标准货币格式字符串“C”或“c”指定的,如本文后面的第二个示例所示。

    示例

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

    double dub = 9;  
    // The following line causes an error that reads "Operator '+' cannot be applied to   
    // operands of type 'double' and 'decimal'"  
    Console.WriteLine(dec + dub);   
    
    // You can fix the error by using explicit casting of either operand.  
    Console.WriteLine(dec + (decimal)dub);  
    Console.WriteLine((double)dec + dub);  

    其结果为以下错误:

    Operator '+' cannot be applied to operands of type 'double' and 'decimal'

    在此示例中,同一个表达式中混合使用了 decimal  int。 计算结果为 decimal 类型。

    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 严格按照正确的格式显示。

    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);
        }
    }
    /* Output:
        My amount = $1.00
        Your amount = $9,999,999,999,999,999,999,999,999,999.00
    */



  • 相关阅读:
    IntelliJ IDEA 2017版 SpringBoot的核心配置详解
    路由追踪程序traceroute/tracert分析与科普
    traceroute追踪路由命令
    ping 命令
    hostname命令,修改主机名及host文件
    net-tools工具arp命令
    ifup 和 ifdown
    net-tools工具ifconfig 命令
    iproute2 对决 net-tools
    什么是带内管理 带外管理
  • 原文地址:https://www.cnblogs.com/gangzhucoll/p/12778308.html
Copyright © 2020-2023  润新知