【问题标题】:Display commas in a number converted to string using custom string format在使用自定义字符串格式转换为字符串的数字中显示逗号
【发布时间】:2017-10-08 00:23:56
【问题描述】:

我正在尝试使用以下自定义格式化程序更改可以是整数或小数的对象的格式以添加逗号(例如,1000 要返回为 1,000)

string temp => $"{value:n0}"

上面的工作正常,但是当值为十进制时,它会删除小数点,所以我想出了以下格式,当值为十进制但不返回逗号时保留小数

string temp => $"{value:.#}"

我可以知道一个更好的方法来获得以下结果吗?

1000 to be returned as 1,000
13.00 to be returned as 13
13.1 to be returned as 13.1

我只想在小数不为零时才包含小数

【问题讨论】:

  • 如果你想要小数点,为什么要使用n0?为什么不n1
  • @PanagiotisKanavos 当我使用 n1 时,它总是返回小数点,这在我提到的第二种情况 (13.0 ->13) 中失败
  • @NickWilson 我不确定它是否与前面的 cmets 中提到的重复,我想排除零的小数点
  • @NickWilson 不是重复的。链接的问题本质上要求n2。如果输入不包含任何小数,OP 希望防止小数

标签: c# string string-formatting


【解决方案1】:

对于整数/类型值没有返回 0 位小数的标准格式。您可以使用 #,###.# 格式返回一个字符串,该字符串使用 groupind 和小数分隔符以及可选的十进制数字。您必须明确指定小数位数。

行:

Console.WriteLine($"{d:#,###.#}");

以您指定的形式返回字符串:

1000       -> 1,000
13         -> 13
13.1       -> 13.1
1234567.8  -> 1,234,567.8

【讨论】:

  • 我假设上面的代码返回 13.0 作为 13 而不是 13.0
  • 你上一个例子有错字吗?那应该是左边的多个小数位在右边四舍五入吗?
  • @Dev:13.0 和 13 之间没有区别。它们是相同的数字,只有在转换为字符串时才会以不同的方式显示。所以是的,13.0 将返回 13,与 13 相同。
  • @Chris 你是对的,当我尝试1234567.89时,我正在试验两位小数@
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2022-01-20
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多