在C#中,用于货币的最佳数据类型是什么?


在C#中,用于货币的最佳数据类型是decimal。decimal类型是一个128位数据类型,适用于财务和货币计算。decimal类型可以表示从1.0 * 10^-28到大约7.9 * 10^28的数值,具有28-29位有效数字。要初始化一个decimal变量,请使用后缀m或M。

decimal b = 2.1m;

下面的例子显示了decimal类型的最小值和最大值。

示例

 在线演示

using System;
namespace DemoApplication{
   public class Program{
      public static void Main(){
         Console.WriteLine($"Deciaml Min Value: {decimal.MinValue}");
         Console.WriteLine($"Deciaml Max Value: {decimal.MaxValue}");
         Console.ReadLine();
      }
   }
}

输出

Deciaml Min Value: -79228162514264337593543950335 

Deciaml Max Value: 79228162514264337593543950335


decimal类型的有限值集的形式为(-1)^s * c * 10^-e,其中符号s为0或1,系数c由0 <= *c* < 2^96给出,比例e满足0 <= e <= 28。decimal类型不支持带符号的零、无穷大或NaN。decimal表示为一个96位整数,乘以10的幂。对于绝对值小于1.0m的十进制数,其值精确到小数点后第28位,但不会更精确。

对于绝对值大于或等于1.0m的十进制数,其值精确到28或29位。与float和double数据类型相反,十进制小数(例如0.1)可以在十进制表示中精确表示。在float和double表示中,这样的数字通常是无限小数,这使得这些表示更容易出现舍入误差。

decimal类型优于float和double,因为它具有更高的精度,并且范围小于float和double。

示例

让我们考虑一个将美元转换为印度卢比的例子。

 在线演示

using System;
namespace DemoApplication{
   public class Program{
      public static void Main(){
         decimal usd = 2.5m;
         Console.WriteLine($"USD: {usd}");
         decimal inrOfOneUSD = 75.04m;
         Console.WriteLine($"INR value of one USD: {inrOfOneUSD}");
         decimal inr = usd * inrOfOneUSD;
         Console.WriteLine($"INR value: {inr}");
         Console.ReadLine();
      }
   }
}

输出

上述代码的输出是

USD: 2.5
INR value of one USD: 75.04
INR value: 187.600

更新于:2020年8月19日

6000+ 次查看

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.