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

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

十进制b = 2.1m;

以下示例显示了十进制的最小值和最大值。

示例

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


十进制类型的有限值集的形式为(-1)^ s * c * 10 ^ -e,其中符号s为0或1,系数c由0 <= * c * <2 ^给出96,并且小数位数e等于0 <= e <=28。十进制类型不支持带符号的零,无穷大或NaN。十进制表示为以10的幂进行缩放的96位整数。对于绝对值小于1.0m的小数,该值精确到小数点后28位,但不能超过此位数。

对于绝对值大于或等于1.0m的小数,该值精确到28或29位数字。与float和double数据类型相反,十进制小数(例如0.1)可以用十进制表示形式精确表示。在浮点表示法和双精度表示法中,此类数字通常是无穷小数,这使这些表示法更容易产生舍入误差。

小数类型优于浮点和双精度类型,因为与浮点和双精度类型相比,十进制类型具有更高的精度和更小的范围。

示例

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

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
猜你喜欢