【问题标题】:Format decimal number with set maximal precision but without unneeded trailing zeroes使用设置的最大精度格式化十进制数,但没有不需要的尾随零
【发布时间】:2014-08-22 22:14:42
【问题描述】:

我使用以下代码格式化小数

return string.Format(CultureInfo.CreateSpecificCulture("nb-NO"), "{0:N3}", decVal);

如果 decVal 不包含小数,我不想显示小数点,但我想以正确的格式显示不带零的数字,如何执行此操作?

【问题讨论】:

  • 你能举一个输入和预期输出的例子吗?
  • @UweKeim 这个问题实际上有点不同(虽然这个问题的正确答案也埋在那里)。
  • @SonerGönül 74,200 带小数和不带 56,000
  • @UweKeim 啊,好的,所以有了这个评论,很明显你在重复的问题上是完全正确的,即使 OP 写错了 :)

标签: c# .net formatting decimal


【解决方案1】:

您可以使用自定义数字格式,例如:

return string.Format(CultureInfo.CreateSpecificCulture("nb-NO"), "{0:0.###}", decVal);

您可能想了解standard numeric formatscustom numeric formats

编辑:

要处理您可以使用的千位分隔符:

return string.Format(CultureInfo.CreateSpecificCulture("nb-NO"), "{0:#,0.###}", decVal);

但是,要处理一些特定情况,您最好实现SO thread 中描述的格式。

P.S.:感谢@Luaan (0.###);

【讨论】:

  • 我会改用0.###。您通常不想隐藏零:)
  • @Luaan 我需要使用逗号作为小数分隔符
  • @Kirov . 在格式说明符中是小数分隔符(, 是千位分隔符)。使用正确的文化,它会在输出时写成逗号。
猜你喜欢
  • 2015-04-24
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多