настройка количества цифр в показателе степени в многократном увеличении

Мы только что перешли на Visual Studio 2017 и из-за изменение описано здесь сериализованный вывод двойного значения с использованием std::scientific больше не несет 2 цифры в показателе степени, а только одну.

 BEOFRE: 5.49000000000000000e+002
NOW   : 5.49000000000000000e+02

Мы используем boost::serialization сериализовать в XML.

Мы думали перейти на boost::multiprecision для обработки большего числа, но все же мы должны исправить эту проблему с помощью цифр в показателе степени.

Есть ли способ вернуться к старому обозначению ‘e + 002’ или даже настроить его с помощью boost::multiprecision ?

0

Решение

Читая соответствующий раздел, кажется, что _set_output_format с не _TWO_DIGIT_EXPONENT может дать старое поведение?

Форматирование экспонентов Спецификаторы формата% e и% E форматируют число с плавающей запятой как десятичную мантиссу и экспоненту. Спецификаторы формата% g и% G в некоторых случаях также форматируют числа в этой форме. В предыдущих версиях CRT всегда генерировал строки с трехзначными показателями. Например, printf («% e \ n», 1.0) будет печатать 1.000000e + 000. Это было неверно: C требует, чтобы, если показатель степени представлен только одной или двумя цифрами, то печатались только две цифры.

В Visual Studio 2005 глобальный переключатель соответствия был добавлен: _set_output_format. Программа может вызвать эту функцию с аргументом _TWO_DIGIT_EXPONENT, включить соответствующую экспоненциальную печать. дефолт поведение изменено на режим печати экспоненты в соответствии со стандартами.

0

Другие решения

Других решений пока нет …