【问题标题】:String format C#字符串格式 C#
【发布时间】:2017-11-07 09:00:42
【问题描述】:

我想在执行 string.format 后得到以下格式的货币值。 我使用了几种格式,但没有一种是我想要的。

Value    After Format
0        $0
123      $123
1234     $1,234
12345    $12,345

我使用了以下代码,它工作正常。

Console.WriteLine(string.Format("{00:$#,#}", 12345));

但问题是当值变为 0 时它只打印 $ 而我想打印 $0

谢谢

【问题讨论】:

标签: c# formatting format string.format


【解决方案1】:

格式字符串中的#表示如果不为零则显示一个数字。所以当你有一个 0 值时,它不会显示任何东西。

所以你需要把它改成

Console.WriteLine(string.Format("{00:$#,0}", mynumber));

但您也可以使用内置的货币字符串格式化选项。

文档有一整节关于货币格式 https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings#CFormatString

那么你就可以拥有了

Console.WriteLine(string.Format("{0:c}", 99.556551));

或者如果你不想要任何小数位,那么

Console.WriteLine(string.Format("{0:C0}", 99.556551));

虽然这也会对值进行四舍五入,但如果您自己控制它可能会更好。

正如下面@RufusL 所提醒的,string.format 不需要在 Console.Writeline, 中,因此您还可以进一步简化它;

Console.WriteLine("{0:C0}", 99.556551);

【讨论】:

  • @RufusL 是的,你当然是对的,我只关注格式差异并复制并粘贴其余部分,而我忽略了这一点。我会更新以使这一点显而易见。
猜你喜欢
  • 2021-05-09
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 1970-01-01
  • 1970-01-01
  • 2011-07-22
  • 2017-04-18
相关资源
最近更新 更多