【问题标题】:Remove trailing zeros and thousand separator (comma)删除尾随零和千位分隔符(逗号)
【发布时间】:2018-03-21 19:06:18
【问题描述】:

因为我在小数点后面没有值时使用它来删除尾随零:

decimal.Parse(variable).ToString("G29")

但它没有给出千位分隔符。例如:

string amount = "54321.00"
string amount2 = "54321.55"
string parsed = decimal.Parse(amount).ToString("G29");
string parsed2 = decimal.Parse(amount2).ToString("G29");
//parsed = 54321
//parsed2 = 54321.55

//my goal
//parsed = 54,321
//parsed2 = 54,321.55

有没有更好的格式类型?

【问题讨论】:

  • 考虑到你想要什么,你到底为什么要使用G29 格式?您是否甚至对可用的标准数字格式字符串以及每个字符串的作用进行了最低限度的研究?你可以开始here
  • 54321.556 的格式化输出应该是什么? 54,321.556?还是54,321.56
  • @InBetween 当十进制 (.000) 后面没有值时,它将被隐藏。 54321.556 的输出应该是 54,321.556
  • 好的,然后阅读提供的链接并进行一些研究。如果没有适用(仍然是一个很好的阅读),那么阅读自定义数字格式字符串可能是一个好主意。
  • 为什么将数字存储为文本开头?根据它们的含义将它们存储为双精度或小数。

标签: c#


【解决方案1】:

使用自定义格式

string format = "#,#.##";

decimal noDecimalPlaces = 54321.00m;
decimal decimalPlaces = 54321.55m;

Console.WriteLine(noDecimalPlaces.ToString(format)); // writes 54,321
Console.WriteLine(decimalPlaces.ToString(format)); // writes 54,321.55

您可以阅读有关格式化小数的更多信息on msdn

工作原理

后半部分.## 指定您最多允许两位小数。前一部分 #,# 指定您要分隔值的整数部分。

注意

数字格式仍然是特定于文化的,因此对于使用, 作为小数分隔符和. 用于数字分组的文化,您的数字将显示为54.32154.321,55反而。您可以在 .NET here 中找到有关格式化的更多信息。

【讨论】:

  • 注释是这个答案的实际附加值。它的UICulture 决定了分隔符的格式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
  • 2021-10-16
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
相关资源
最近更新 更多