一尘不染

删除尾随零

c#

我有一些由集合返回的字段

2.4200
2.0044
2.0000

我想要类似的结果

2.42
2.0044
2

我尝试使用String.Format,但它会返回2.0000并将其设置为也N0舍入其他值。


阅读 291

收藏
2020-05-19

共1个答案

一尘不染

如果输入是字符串,这不是那么简单吗?您可以使用以下之一:

string.Format("{0:G29}", decimal.Parse("2.0044"))

decimal.Parse("2.0044").ToString("G29")

2.0m.ToString("G29")

这应该适用于所有输入。

更新 检查标准数字格式,我必须将docs明确指出的精度说明符设置为29:

但是,如果数字为小数并且省略了精度说明符,则始终使用定点表示法并保留尾随零。

更新 Konrad
在评论中指出

提防诸如0.000001之类的值。G29格式将以最短的方式显示它们,因此它将切换为指数表示法。string.Format("{0:G29}", decimal.Parse("0.00000001",System.Globalization.CultureInfo.GetCultureInfo("en- US")))结果将为“ 1E-08”。

2020-05-19