Информация об изменениях

Сообщение Re: Вывод двух цифр в показателе порядка вещественного числа от 15.12.2015 11:54

Изменено 15.12.2015 13:00 watchmaker

Здравствуйте, RussianFellow, Вы писали:


RF>Функция printf (fprintf) с использованием формата %.6le выводит на экран (в файл) шесть цифр (в данном случае) после запятой и три цифры после знака порядка (то есть, например, 1.234567e+000).


Это implementation defined поведение. По стандарту в экспоненте не меньше двух цифр должно быть. То есть три — это допустимая реализация.
Хотя у меня что libstdc++, что libc++ выводят по две цифры по умолчанию. У тебя видимо что-то другое используется?

RF>А можно ли сделать так, чтобы вместо 000 выводилось бы 00 (в данном примере), то есть чтобы вместо 1.234567e+000 выводилось бы на экран 1.234567e+00 ?

RF>Как это сделать? Можно ли это сделать с помощью функции printf (fprintf) или же для этого надо использовать другие средства C++ ?

Универсально — использовать frexp и выводить через printf два поля отдельно.
Re: Вывод двух цифр в показателе порядка вещественного числа
Здравствуйте, RussianFellow, Вы писали:


RF>Функция printf (fprintf) с использованием формата %.6le выводит на экран (в файл) шесть цифр (в данном случае) после запятой и три цифры после знака порядка (то есть, например, 1.234567e+000).


Это implementation defined поведение. По стандарту в экспоненте не меньше двух цифр должно быть. То есть три — это допустимая реализация.
Хотя у меня что libstdc++, что libc++ выводят по две цифры по умолчанию. У тебя видимо что-то другое используется?

RF>А можно ли сделать так, чтобы вместо 000 выводилось бы 00 (в данном примере), то есть чтобы вместо 1.234567e+000 выводилось бы на экран 1.234567e+00 ?

RF>Как это сделать? Можно ли это сделать с помощью функции printf (fprintf) или же для этого надо использовать другие средства C++ ?

Универсально — разделить самому число на мантиссу и экспоненту (по аналогии с frexp, только с основанием 10) и выводить через printf два поля отдельно с любым форматированием.