C#:我有一个十进制数字,我想用逗号分隔千位数而不是数字。作为堆栈溢出的答案,我使用了.ToString("#,##0")
但它将数字四舍五入。我不能接受这个数字!
在我的模特中我有:
public decimal? ADecimalNumber { get; set; }
在控制器中我有:
ViewBag.ADecimalNumber = result?.ADecimalNumber;
在视图中我有:
@(ViewBag.ADecimalNumber != null ? ViewBag.ADecimalNumber.ToString("#,##0") : '-')
快速观看模式下的ViewBag值为11106.8314M
,ViewBag.ADecimalNumber.ToString("#,##0")
结果为"11,107"
。
答案 0 :(得分:2)
这是自定义说明符的默认行为。请参阅The "#" Custom Specifier。
“##”格式字符串使得值四舍五入到小数点前面的最接近的数字,其中始终使用从零开始的舍入。例如,使用“##”格式化34.5将导致值为35。
答案 1 :(得分:0)
舍入是#
自定义数字格式化程序行为的一部分。如果您不想舍入,请使用Math.Truncate()
在句点之后剪切数字:
Math.Truncate(ViewBag.ADecimalNumber).ToString("#,##0")
如果要打印n个小数位,请将数字乘以10的n次幂,截断,然后除以相同的幂,例如:Math.Truncate(123456.78M * 10M)/10M
将给出123456.7,您可以使用格式字符串#,###.#