十进制默认舍入模式和货币格式

问题描述 投票:0回答:1

考虑以下代码:

decimal value = 12.345m;
Console.WriteLine(value.ToString("C"));

12.35 英镑

鉴于 .NET 中默认的

MidpointRounding
模式是
MidpointRounding.ToEven
,为什么在格式化为货币时该值会向上舍入(远离偶数,即 12.34)?

供参考:

Console.WriteLine(decimal.Round(value, 2));

12.34

c# decimal rounding currency bankers-rounding
1个回答
0
投票

特殊的 货币格式说明符

C
在四舍五入小数位时将远离零舍入:

如果指定小数位数右侧的值为 5 或更大,则结果字符串中的最后一位数字将远离零舍入。

您有小数位

.345
并且
CurrencyDecimalDigits
属性设置为
2
(在这种情况下)。这意味着“指定小数位数的右边”是
5
,并且大于或等于
5
。文档指出,在这种情况下,值
12.345
会从零向上舍入为
12.35

© www.soinside.com 2019 - 2024. All rights reserved.