编程语言
首页 > 编程语言> > C#-如果小数位为.00,则需要忽略字符串中的小数位

C#-如果小数位为.00,则需要忽略字符串中的小数位

作者:互联网

大家好,我想从字符串号中忽略此.00.以下是我的示例输入,需要输出.我已经尝试过此代码. String.Format(“ {0:n}”,Amount),但是此代码有问题.

如果值为10000. 00.
我的代码会将其转换为“ 10,000.00”
但我只需要“ 10,000”.

请帮助我解决问题.

更多示例:

10000.00  -> "10,000"
10000.12  -> "10,000.12"
10000.1   -> "10,000.10"

解决方法:

因此,您有某种钱:当且仅当我们拥有它们时,我们才会输出美分:

  10000.00  -> 10,000    (no cents; exactly 10000)
  10000.003 -> 10,000    (no cents; still exactly 10000) 
  10000.1   -> 10,000.10 (ten cents)
  10000.12  -> 10,000.12 (twelve cents)
  10000.123 -> 10,000.12 (still twelve cents)

后三种情况我们可以将格式设置为“#,0.00”,而前两种情况将使用“#,0”格式字符串正确.唯一的问题是区分情况.

我们可以尝试使用Math.Round()

  string result = d.ToString(Math.Round(d) != Math.Round(d, 2) ? "#,0.00" : "#,0");

演示:

decimal[] tests = new decimal[] {
  10000.00m,
  10000.003m,
  10000.10m,
  10000.12m,
  10000.123m,
};

string report = string.Join(Environment.NewLine, tests
  .Select(d => 
     $"{d,-10} -> {d.ToString(Math.Round(d) != Math.Round(d, 2) ? "#,0.00" : "#,0")}"));

Console.Write(report);

结果:

10000.00   -> 10,000
10000.003  -> 10,000
10000.10   -> 10,000.10
10000.12   -> 10,000.12
10000.123  -> 10,000.12

标签:number-formatting,c
来源: https://codeday.me/bug/20191108/2008794.html