规范化 System.Decimal - 去除尾随零

Ben*_*sen 5 c# format decimal

我有一种非常紧凑的方法来删除十进制值中的尾随零,但我更喜欢一种不涉及字符串往返的方法,就像我目前所做的那样。这是我当前的解决方案:

var value = 0.010m;
value = decimal.Parse(value.ToString("G29"));
Console.WriteLine(value); // prints 0.01 (not 0.010)
Run Code Online (Sandbox Code Playgroud)

所以它有效,但是你有更好的方法吗?

另外,第二个问题是decimalValue.ToString() 100% 符合xs:decimal?

Ben*_*sen 1

这是一个新的草案想法:

public static class DecimalEx
{
    public static decimal Fix(this decimal value)
    {
        var x = value;
        var i = 28;
        while (i > 0)
        {
            var t = decimal.Round(x, i);
            if (t != x)
                return x;
            x = t;
            i--;
        }
        return x;
    }
}
Run Code Online (Sandbox Code Playgroud)

这可能就可以了。但它非常粗糙。需要测试并简化它。