格式化十进制c# - 保持最后一个零

Peu*_*uge 8 c# string-formatting

我一直在寻找这个,但似乎无法找到答案.我有以下小数与我想要的String.Format相应的输出

100.00 - > 100
100.50 - > 100.50
100.51 - > 100.51

我的问题是我似乎无法找到一种格式,它将0保持在100.50的末尾,并从100中删除2个零.

任何帮助深表感谢.

编辑 更清晰.我有十进制类型的变量,它们只会是2位小数.基本上我想显示2个小数位,如果它们存在或没有,我不想在100.50变为100.5的情况下显示一个小数位

Hei*_*nzi 16

据我所知,没有这样的格式.您必须手动实现此功能,例如:

String formatString = Math.Round(myNumber) == myNumber ? 
                      "0" :     // no decimal places
                      "0.00";   // two decimal places
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 14

你可以用这个:

string s = number.ToString("0.00");
if (s.EndsWith("00"))
{
    s = number.ToString("0");
}
Run Code Online (Sandbox Code Playgroud)

  • 将`s = s.Substring(0,s.Length - 3)`替换为`s = number.ToString("0")`可能会稍微安全一些,以防万一可能存在一些使用多个的奇怪文化 - 字符小数点.当然,这似乎不太可能,但作为一个原则问题,最好尽可能少做假设. (3认同)
  • 与tobias86的答案一样,这不适用于所有机器,因为有些使用逗号作为小数分隔符. (2认同)

mat*_*ieu 5

测试您的号码是否为整数,并使用以下格式:

string.Format((number % 1) == 0 ? "{0}": "{0:0.00}", number)
Run Code Online (Sandbox Code Playgroud)