Ограничить максимальное количество символов в двойном

1

Есть ли элегантный способ конвертировать двойной символ в строку, чтобы округлить его до максимальной общей длины, но в остальном он похож на формат нейтральной культуры по умолчанию?

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

Например, максимум 20 символов

-1.23456789012345E-67

должен выглядеть как

-1.2345678901235E-67

в то время как

123 должно отображаться как 123, а не 1.23E+02.

  • 0
    Формат G должен создавать наиболее компактное строковое представление. Возможно, вы захотите реализовать собственный форматер (как метод расширения для double примера), который будет выполнять всю вашу логику: преобразование, проверка и т. Д.
Теги:
double

1 ответ

0

Как отметил Sintar, спецификатор формата G должен делать все, что вам нужно.

double s = 1.31956544564371E+28;
Console.WriteLine("{0:G5}",s);  // will print 1.3196E+28

Может быть полезным следующий метод расширения:

public static class doubleExtensions
{
    public static string GetDoubleString(this double source,int numOfChars){
        string  temp = "{0:G" + numOfChars + "}";
        return string.Format(temp,source);
    }
}
  • 0
    Это просто контролирует количество значащих цифр, а не символов. Например. -1.2345678E-123 становится -1.2346E-123 (12 символов), но 1234.5678 становится 1234.6 (6 символов).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню