修改“G"c#中的字符串格式化程序,当number包含至少两个0时使用指数

本文关键字:包含 指数 0时 两个 number quot 程序 格式化 字符串 修改 | 更新日期: 2023-09-27 18:04:06

是否可以修改标准数字格式"G",以便当数字在小数点后包含2个以上的零时使用指数。如果没有,请提供其他解决方案

Console.WriteLine("{0:G}", -0.001960231155763821);输出1.96023115576382E-03

我不能使用"E"格式化器,因为我还必须格式化double,如0.1326402168430582,输出应该是0.132640216843058

当数字在小数点后包含超过4个零时,指数似乎在"G"格式化程序中使用,例如Console.WriteLine("{0:G}", 0.000023);输出2.3E-05

修改“G"c#中的字符串格式化程序,当number包含至少两个0时使用指数

可以编写扩展方法。下面是您可以在LINQPad中复制粘贴并运行的代码。Dump()方法是LINQPad的扩展方法。因此,如果你将代码复制到VS,请忽略它。

void Main()
{
    var x = -0.00160231155763821;
    var x2 = 0.099;
    var x3 = -0.001;
    x.G2Format().Dump("x");
    x2.G2Format().Dump("x2");
    x3.G2Format().Dump("x3");
}
public static class Extensions
{
    public static string G2Format(this double value)
    {
        var format = (0.01 > value) ? "{0:e}" : "{0:G}";
        return string.Format(format, value);
    }
}

结果如下:

x
-1.602312e-003
x2
0.099
x3
-1.000000e-003

这是你想要的吗?