如何以小数为单位删除最后一个零



我试图删除十进制值的最后一个零搜索的最后一个零,但是Web中的所有答案和堆栈溢出中的所有答案都删除了所有零。我的目的是在最后显示一些零。

Sample
50.00000000
50.01000000
50.01010000
50.01011000
50.01010100
expected 
    50.00
    50.01
    50.0101
    50.01011
    50.010101

我不喜欢如何在C#中进行。

我受到了许多诸如.ToString("G29")之类的东西;还有其他可用的答案,但这一切都给了我

50.00
50.01
50.01
50.01
50.01

请帮助..

尝试以下:

decimal num = 50.00m;
decimal num2 = 50.01010100m;
Console.WriteLine(num.ToString("0.00#########"));
Console.WriteLine(num2.ToString("0.00#########"));

输出:

50.00
50.010101

(如" Alex"one_answers" Erno de Weerd"的评论中的建议)

您可以使用trimend删除这样的最后一个零:

decimal num = 50.01011000m;
if (num % 1 == 0)
{
    return num.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture);
}       
string str = num.ToString().TrimEnd('0');
Console.WriteLine(str);

输出:

50,01011

您也可以将其包装到扩展方法中:

public static class Extensions
{
    public static string ToTrimmendString(this decimal num)
    {
        if (num % 1 == 0)
        {
            return num.ToString("0.00", System.Globalization.CultureInfo.InvariantCulture);
        }
        return num.ToString().TrimEnd('0');
    }
}

这样称呼:

Console.WriteLine(num.ToTrimmendString());

您可以尝试

    double num = 50.010110000;
    Console.WriteLine(num.ToString("0.0000", CultureInfo.InvariantCulture) );

请参阅此信息有关更多信息https://larch.microsoft.com/en-us/dotnet/standard/bask-types/custom-numeric-format-sintrings#specifierpt`

您可以尝试这样的东西

public decimal removeTrailingZeros(decimal val)
{
    return val % 1 == 0 ? Math.Round(val, 2) : val / 1.0000000000000000000000000000000000m;
}

测试输入

50.00000000m,50.01000000m,50.01010000m,50.01011000m,50.01010100m,

输出

50.0050.0150.010150.0101150.010101

相关内容

  • 没有找到相关文章

最新更新