我有一些由集合返回的字段
2.4200
2.0044
2.0000
我想要这样的结果
2.42
2.0044
2
我试过用String。格式,但它返回2.0000,并将其设置为N0也会四舍五入其他值。
我有一些由集合返回的字段
2.4200
2.0044
2.0000
我想要这样的结果
2.42
2.0044
2
我试过用String。格式,但它返回2.0000,并将其设置为N0也会四舍五入其他值。
当前回答
其他答案:
在WPF应用程序中使用XAML你可以使用
{Binding yourDecimal, StringFormat='#,0.00#######################'}
上面的答案将在某些情况下保留0,因此您仍然可以返回2.00
{Binding yourDecimal, StringFormat='#,0.#########################'}
如果要删除所有后面的零,请相应地进行调整。
其他回答
string.Format("{0:G29}", decimal.Parse("2.00"))
string.Format("{0:G29}", decimal.Parse(Your_Variable))
你可以设置为:
decimal decNumber = 23.45600000m;
Console.WriteLine(decNumber.ToString("0.##"));
取决于你的数字代表什么,以及你想如何管理这些值:它是一种货币,你需要舍入还是截断,你只需要这个舍入来显示吗?
如果用于显示,则考虑格式化数字为x.ToString("")
http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx和
http://msdn.microsoft.com/en-us/library/0c899ak8.aspx
如果只是四舍五入,请使用Math。需要midpointround重载的圆重载
http://msdn.microsoft.com/en-us/library/ms131274.aspx)
如果你从数据库中获取值,考虑转换而不是转换: double value = (decimal)myRecord["columnName"];
使用散列(#)符号只在必要时显示后面的0。请参阅下面的测试。
decimal num1 = 13.1534545765;
decimal num2 = 49.100145;
decimal num3 = 30.000235;
num1.ToString("0.##"); //13.15%
num2.ToString("0.##"); //49.1%
num3.ToString("0.##"); //30%
如果输入是一个字符串,它不是这么简单吗?你可以使用其中一个:
string.Format("{0:G29}", decimal.Parse("2.0044"))
decimal.Parse("2.0044").ToString("G29")
2.0m.ToString("G29")
这应该适用于所有输入。
我必须显式地将精度说明符设置为29,因为文档清楚地声明:
但是,如果数字是Decimal且省略了精度说明符,则始终使用定点表示法并保留后面的零
Konrad在评论中指出:
注意像0.000001这样的值。G29格式将以最短的方式表示它们,因此它将切换到指数符号。字符串。Format("{0:G29}", decimal.Parse("0.00000001",System.Globalization.CultureInfo.GetCultureInfo("en-US")))将给出"1E-08"作为结果。