C#十进制记忆精度:如何调整
Decimal会记住其小数位数:C#十进制记忆精度:如何调整,c#,decimal,precision,digits,C#,Decimal,Precision,Digits,Decimal会记住其小数位数: Console.WriteLine(1.1m); // 1.1 Console.WriteLine(1.10m); // 1.10 我不控制序列化(因此无法使用更显式格式的stringify),但需要精确输出2位小数 因此,我试图将任何小数点强制转换为相同的值,但有2位小数 可以使用ToString(“F”)和Decimal.Parse()实现。但是有没有比通过ToString()更简洁的方法呢?为了确保/提高小数点后的“精度”高达2位数,您可以添加0.00m
Console.WriteLine(1.1m); // 1.1
Console.WriteLine(1.10m); // 1.10
我不控制序列化(因此无法使用更显式格式的stringify),但需要精确输出2位小数
因此,我试图将任何小数点强制转换为相同的值,但有2位小数
可以使用
ToString(“F”)
和Decimal.Parse()
实现。但是有没有比通过ToString()
更简洁的方法呢?为了确保/提高小数点后的“精度”高达2位数,您可以添加0.00m
:
1.1m + 0.00m == 1.10m
同样的想法概括如下:
private static decimal FormatOut(decimal value, int afterDecimal) {
// rounding up and adding 0.00…0 - afterDecimal zeroes
return Decimal.Round(value, afterDecimal, MidpointRounding.AwayFromZero) +
new decimal(0, 0, 0, false, (byte)afterDecimal);
}
...
decimal result = FormatOut(1.1m, 2);
// 1.10
Console.Write(result);
为了确保/增加小数点后的“精度”至2位数,您可以添加0.00m
:
1.1m + 0.00m == 1.10m
同样的想法概括如下:
private static decimal FormatOut(decimal value, int afterDecimal) {
// rounding up and adding 0.00…0 - afterDecimal zeroes
return Decimal.Round(value, afterDecimal, MidpointRounding.AwayFromZero) +
new decimal(0, 0, 0, false, (byte)afterDecimal);
}
...
decimal result = FormatOut(1.1m, 2);
// 1.10
Console.Write(result);
如果要提高“精度”,请添加0.00m
:1.1m+0.00m==1.10m
如何序列化?您可能可以控制小数在序列化程序本身中的序列化方式。如果要提高“精度”,请添加0.00m
:1.1m+0.00m==1.10m
如何序列化?您可能可以控制小数在序列化程序本身中的序列化方式。