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