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

时间:2018-09-18 11:20:42

标签: c# number-formatting

你好,我想从字符串号中忽略这个.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"

4 个答案:

答案 0 :(得分:2)

使用此格式String.Format ("{0:0.##}", Amount)

或带千位分隔符:@ {Dmitry Bychenko的"{0:#,0.##}"

答案 1 :(得分:1)

所以您有某种 money :当且仅当我们拥有它们时,我们才会输出 cents

  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

答案 2 :(得分:0)

转换为整数将删除您的小数位,并且N2格式将用作千位分隔符。

([int]10000.00).ToString("N");

答案 3 :(得分:0)

您可以添加另一个扩展名

        var Amount = "1000.00";
        var r = String.Format("{0: n}", Amount).Replace(".00", "");