изменение форматера строки «G» в C # для использования показателей, когда число содержит как минимум два нулевых дп - PullRequest
2 голосов
/ 01 августа 2011

Можно ли изменить стандартный числовой формат «G», чтобы показатель степени использовался, когда число содержит более 2 нулей после десятичного знака.Если нет, то будут оценены альтернативные решения

, например, Console.WriteLine("{0:G}", -0.001960231155763821); выходы 1.96023115576382E-03

Я не могу использовать форматер "E", потому что для меня также нужно форматировать double, как 0.1326402168430582, для котороговыходные данные должны быть 0,132640216843058

Кажется, что показатели используются в форматере "G", когда число содержит более 4 нулей после десятичной точки, например, Console.WriteLine("{0:G}", 0.000023); выводит 2.3E-05

1 Ответ

1 голос
/ 02 августа 2011

Вы можете написать метод расширения.Ниже приведен код, который вы можете скопировать и вставить в 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

Это то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...