Используйте экспоненциальное представление только если необходимый

Я хочу разобрать дважды стоимость в последовательность . Я хочу, чтобы у моего числа было конкретное количество цифр (что я не буду знать до времени выполнения). Если это число может быть выражено ненулевым значением в количестве цифр, это - то, что я хочу. Если число выходит как ноль как это, я хочу выраженный в экспоненциальном представлении.

Некоторые примеры сделают это более ясным, это предполагает, что я хотел 3 цифры:

Value: .2367 Output: "0.23"

Value: .00367 Output: "3.67E-3"

Value: 22.3 Output: "22.3"

Value: 3364.0 Output: "3.36E3"

Моя работа вокруг решения использовала бы ToString () метод и N последовательность числового формата и если это приводит к нолю, возвращаются к E строка формата, но это испытывает желание перестраивать колесо. Кто-либо знает если построенный в методе делать это?

5
nl ja de
Wouldn' t вы хотите 2.37E-1 для первого?
добавлено автор Rowland Shaw, источник
На самом деле мое предпочтение должно было бы только использовать экспоненциальное представление, если бы все ценности были 0, но так или иначе были бы достаточны.
добавлено автор Fr33dan, источник

1 ответы

Вы посмотрели на использование Общий спецификатор числового формата?

Общий ("G") спецификатор формата преобразовывает число в большинство компактный или фиксированной точки или экспоненциального представления, в зависимости от тип числа и присутствует ли спецификатор точности.

Некоторые образцы из документации:

double number;

number = .0023;
Console.WriteLine(number.ToString("G", CultureInfo.InvariantCulture));
// Displays 0.0023

number = 1234;
Console.WriteLine(number.ToString("G2", CultureInfo.InvariantCulture));
// Displays 1.2E+03

number = Math.PI;
Console.WriteLine(number.ToString("G5", CultureInfo.InvariantCulture));
// Displays 3.1416 
14
добавлено
Я don' t знают, как мне удалось пропустить это в документации.
добавлено автор Fr33dan, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot