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

2.4200
2.0044
2.0000

我想要这样的结果

2.42
2.0044
2

我试过用String。格式,但它返回2.0000,并将其设置为N0也会四舍五入其他值。


当前回答

要从字符串变量dateTicks中删除后面的零,请使用

返回新的字符串(dateTicks.Take(dateTicks.LastIndexOf(dateTicks.Last(v => v != '0')) + 1)。ToArray());

其他回答

如果输入是一个字符串,它不是这么简单吗?你可以使用其中一个:

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"作为结果。

非常简单的答案是使用TrimEnd()。这是结果,

double value = 1.00;
string output = value.ToString().TrimEnd('0');

输出为1 如果我的值是1.01,那么输出将是1.01

其他答案:

在WPF应用程序中使用XAML你可以使用

{Binding yourDecimal, StringFormat='#,0.00#######################'}

上面的答案将在某些情况下保留0,因此您仍然可以返回2.00

{Binding yourDecimal, StringFormat='#,0.#########################'}

如果要删除所有后面的零,请相应地进行调整。

这是可行的:

decimal source = 2.4200m;
string output = ((double)source).ToString();

或者如果你的初始值是string:

string source = "2.4200";
string output = double.Parse(source).ToString();

请注意这条评论。

这很简单。

decimal decNumber = Convert.ToDecimal(value);
        return decNumber.ToString("0.####");

测试。

欢呼:)