Как получить идеальный формат ToString для моего калькулятора? - PullRequest
1 голос
/ 17 октября 2019

Я стажер, и я построил калькулятор. Мне нужна помощь в идеальном формате для моих нуберов. Я использую C # и WindowsForms. Это теперь с форматом N:

    100 = 100,00
    1000 = 1.000,00
    more than 999 Trillion = 1.000.000.000.000.000,00 (no 10e+ x)
    0,123456789 = 0,16 (completes after two places)

Я пытался создать собственный формат, но я не получил его. Формат, который я хочу:

    100 = 100
    1000 = 1.000
    1000000 = 1.000.000
    1000000000 = 1.000.000.000 
    etc.
    more than 999 Trillion = X10e+ X
    0,3 = 0,3
    0,123456789 = 0,123456789
    and at to much negative range = -x.00000000000e -x

Короче говоря. Мне нужен вариант 10e +/- после 999.999.999.999.999 каждые 3 шага в положительной области нуждаются в точке (1.000, 100.000, 1.000.000) нет, 00 в нормальных целых числах и 0,00000000000 для достаточного количества мест, в которых я так много искалGoogle, кто-нибудь может помочь?

1 Ответ

0 голосов
/ 17 октября 2019

Не уверен, что это именно тот формат, который вам нужен, но, внедрив расширение, вы можете установить свои собственные правила для достижения желаемого результата. Я использую испанца CultureInfo, потому что он использует запятую в качестве десятичного разделителя.

public static class Extensions
{
    public static string Formatted(this double d)
    {
        if (d >= 1e+15)
        {
            return d.ToString(CultureInfo.GetCultureInfo("es-ES"));
        }
        else
        {
            return d.ToString("#,##0.###############", CultureInfo.GetCultureInfo("es-ES"));
        }
    }
}

Образец:

var testValues = new List<double>()
{
    100,
    1000,
    1000000,
    1000000000,
    1000000000000000,
    0.3,
    0.123456789,
};

foreach (var value in testValues)
{
     Console.WriteLine(value.Formatted());
}

100

1.000

1.000.000

1.000.000.000

1E + 15

0,3

0,123456789

...