C# Форматирование двойного ограничения значащих цифр, но ограничение научной c нотации - PullRequest
0 голосов
/ 29 апреля 2020

Я хочу отформатировать мои double значения, ограничивающие 2 значащих места, но не в целой части числа.

В настоящее время я использую нотацию G2, но она отображает число в научной нотации c, если целая часть содержит более 2 мест.

Также я попробовал 0.##, но он сохраняет 2 значащих места в дробной части независимо от того, сколько их в целой.

То, что я хочу, это:

1234     => 1234
123.4    => 123
12.34    => 12
1.234    => 1.2
0.1234   => 0.12
0.01234  => 0.012
0.001234 => 0.0012

Есть ли какой-нибудь стандартный способ сделать это или я должен сам заново изобрести колесо?

1 Ответ

2 голосов
/ 29 апреля 2020

Я не мог найти способ сделать это, так как это немного нетрадиционно, но это расширение может работать:

public static string DoubleLimited(this double n){      
    return n < 100 ? $"{n:G2}" : n.ToString("#0.");
}

используется как

var num = 1234.0;
Console.WriteLine(num.DoubleLimited());
...