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

2.4200
2.0044
2.0000

我想要这样的结果

2.42
2.0044
2

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


当前回答

下面的代码可以用来不使用字符串类型:

int decimalResult = 789.500
while (decimalResult>0 && decimalResult % 10 == 0)
{
    decimalResult = decimalResult / 10;
}
return decimalResult;

返回789.5

其他回答

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

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

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

如果你想保持十进制数,试试下面的例子:

number = Math.Floor(number * 100000000) / 100000000;

这很简单。

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

测试。

欢呼:)

使用散列(#)符号只在必要时显示后面的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%

下面的代码将能够删除后面的0。我知道这很难,但很有效。

private static string RemoveTrailingZeros(string input) 
{
    for (int i = input.Length - 1; i > 0; i-- )
    {
        if (!input.Contains(".")) break;
        if (input[i].Equals('0'))
        {
            input= input.Remove(i);
        }
        else break;
    }
    return input;
}