首页 > 解决方案 > c# - 带有模式“#.##”的十进制 toString 没有正确格式化为零 (0) 的值

问题描述

下面的代码设置 y = "" 而不是 "0.00"。是否有一种更简洁的方法来对包括 0 在内的所有小数进行转换并正确设置 y 或者是旋转运算符设置变量 z 我的最佳选择?

        decimal x = 0;
        var y = x.ToString("#.##");
        var z = (x == 0) ? "0.00" : x.ToString("#.##");

标签: c#

解决方案


如评论中所述,您应该将 替换#0.

使用“数字占位符”(“#”)时,

...如果输入字符串中的对应数字是非有效数字 0,则结​​果字符串中不会出现数字。例如,0003 ("####") -> 3。

而“零占位符”(“0”)

如果存在 1,则用相应的数字替换 0;否则,结果字符串中将出现零。

(来自文档的引用)

所以正确的方法是:

var y = x.ToString("0.00");

推荐阅读