是否可以修改标准数字格式“G”,以便当数字在小数位后包含超过 2 个零时使用指数。如果没有,将不胜感激其他解决方案
例如Console.WriteLine("{0:G}", -0.001960231155763821);
输出 1.96023115576382E-03
我不能使用“E”格式化程序,因为我还必须像 0.1326402168430582 一样格式化 double,输出应该是 0.132640216843058
当数字在小数点后包含超过 4 个零时,似乎在“G”格式化程序中使用了指数,例如Console.WriteLine("{0:G}", 0.000023);
输出 2.3E-05
最佳答案
您可以编写扩展方法。下面是您可以在 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
这就是你要找的吗?
关于c# - 修改 C# 中的 "G"字符串格式化程序以在数字包含至少两个零 d.p 时使用指数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6902994/