在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