Как в C++ вывести (на экран, в файл) вещественное число таким образом, чтобы количество цифр в показателе порядка было две, а не три?
Функция printf (fprintf) с использованием формата %.6le выводит на экран (в файл) шесть цифр (в данном случае) после запятой и три цифры после знака порядка (то есть, например, 1.234567e+000).
А можно ли сделать так, чтобы вместо 000 выводилось бы 00 (в данном примере), то есть чтобы вместо 1.234567e+000 выводилось бы на экран 1.234567e+00 ?
Как это сделать? Можно ли это сделать с помощью функции printf (fprintf) или же для этого надо использовать другие средства C++ ?
1613 г. = 2024 г.
Здравствуйте, watchmaker, Вы писали:
W>Это implementation defined поведение. По стандарту в экспоненте не меньше двух цифр должно быть. То есть три — это допустимая реализация.
Поспешил и наврал. C++ ссылается в этом вопросе на C, а в C написано
The exponent always contains at least two digits, and only as many more digits as necessary to represent the exponent
То есть вывод трёх нулей в экспоненте запрещены в стандарте, ибо двух уже достаточно.
W>что libstdc++, что libc++ выводят по две цифры по умолчанию. У тебя видимо что-то другое используется?
Значит libstdc++ и libc++ работают верно, а твоя библиотека — нет :) Прикольно. Поиск говорит, что в msvc такой баг есть и даже
предлагает решение.