Переносимая печать экспоненты двойного числа в iostreams C ++

Я хочу напечатать двойное значение для std :: cout переносимо (GCC, clang, MSVC ++), чтобы результат был одинаковым на всех платформах.

У меня проблема с форматированием экспоненты. Следующая программа

#include 
int main()
{
    std::cout << 0.1e-7 << std::endl;
    return 0;
}

имеет этот вывод с помощью GCC:

1e-08

и следующий вывод с помощью MSVC

1e-008

Как я могу сделать оба вывода одинаковыми?

Извините, если это глупый вопрос, но у меня нет нашел ответ пока. Все форматирование, кажется, развивается вокруг форматирования всего до мантиссы ...

РЕДАКТИРОВАТЬ: вывод GCC - 1e-08 , а не 1e-8 (как первоначально заявлено) так что он соответствует . Извините за путаницу.

РЕДАКТИРОВАТЬ2: Фактически переименовано "мантисса" в "экспонента" после замечания Дитмара. В Википедии также есть раздел о мантиссе и значимости .

15
задан Manuel 10 February 2012 в 12:21
поделиться