【问题标题】:Format a decimal to remove trailing zeros and have a thousandths separator格式化小数以删除尾随零并使用千分位分隔符
【发布时间】:2021-11-25 17:30:38
【问题描述】:

我目前有基于 SQL 查询总和计算十进制值的代码。我希望这个值的格式设置为在需要时有 2 个小数位,当它是整数时为 0。除此之外,我还想保留千分位分隔符。

例子:

 string value1 = "1234.00"
 string value2 = "1234.56"

//my goal
//parsed = 1,234
//parsed2 = 1,234.56

我尝试了多种格式设置,但都没有成功。正确的语法是什么?

提前非常感谢。

【问题讨论】:

  • 你的代码在哪里!到目前为止,您尝试过什么?
  • 您的小数和千位分隔符真的使用相同的符号吗?听起来它很快就会变得非常混乱。
  • @Damien_The_Unbeliever 抱歉,我打错字了

标签: c# string-formatting number-formatting


【解决方案1】:

首先要注意的是,您不能正确地将字符串格式化为数字,它们必须是数字类型。如果需要,您可以使用double.TryParse / double.Parse 从字符串中生成数字类型。

但您要查找的格式是#,000.##

var value1 = 1234.00;
var value2 = 1234.56;
var format = "#,###.##";
Console.WriteLine(value1.ToString(format)); // 1,234
Console.WriteLine(value2.ToString(format)); //1,234.56

现场示例:https://dotnetfiddle.net/YoYcP0

custom numeric format stringsstandard numeric format strings 的详细信息

【讨论】:

  • 这不起作用。它格式化后不保留小数点,并将非三位数格式化为 011 而不是 11。
  • @MarcPfister “它的格式没有保留小数点” - 这个片段没有意义。在下一位将0 更改为# 以使所有数字都是可选的,所以#,###.## - 阅读我发布的文档的链接以获取更多信息
  • 实际上它适用于十进制道歉,只需要一位和两位数字来删除前导零。
  • 完美运行,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
  • 2015-02-28
  • 1970-01-01
  • 2022-07-31
相关资源
最近更新 更多