c# - 修改 C# 中的 "G"字符串格式化程序以在数字包含至少两个零 d.p 时使用指数

标签 c# .net string formatting string-formatting

是否可以修改标准数字格式“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/

相关文章:

c# - 如何检查每个用户 session 的运行进程?

c# 写入事件查看器

c# - Dictionary<TKey, TValue> 的枚举器是否按添加顺序返回键值对?

javascript - JS : write a join function using reduce method . .. 函数的控制台日志返回不正确的输出

c# - 为什么这个 MVC 路由不起作用?

c# - Marshal.SizeOf 在枚举上抛出 ArgumentException

c# - 在 C# 中是 bool 读/写原子

python - 管理 python 字符串中的关键字参数 : how to format only some arguments and keep the others unformatted

r - R 将 "TRUE"字符串强制为 TRUE 逻辑是怎么回事?

c# - 我们可以在 C# 对象上实现 Transaction 吗?