Вывод float, double без экспоненты
Выводит float в виде -2.13323e+007. Как заставить нормально выводить — обычной дробью через cout?
Ответы (5 шт):
Некрасиво, зато думать не надо 🙂
Если память не подводит, переменной не хватает диапазона значений. Используйте спецификатор long.
Вот, почитай на эту тему: http://savardge.narod.ru/cpp/article_cpp_t9.html
где n — число, обозначающее минимальную степень десятки, которая будет выводиться в экспоненциальном формате.
Т.е., при n=5 выводим 100000 как 1*10е5, а 99999 — не изменяя.
Однако при значениях n, близких к количеству знаков в целой части числа, дробная выводиться не будет, это стоит учитывать и брать n с запасом.
Как выводить числа без e?
Есть программа, она может выдать и нормальные значения (10.10 к примеру), а может и «корявые». К примеру, 3.333333e что-то типа такого. Нужно сделать проверку на вот эту «e», чтобы в результат не выдавались те числа, в которых присутствует «e».
По умолчанию при преобразовании числа в строку (а для вывода его на экран это обязательно) выбирается кратчайшая запись между обычной (как вы привыкли со времен школы) и экспоненциальной. Чтобы изменить это поведение, вам придется указать формат явно.
Для того чтобы форматтер отбрасывал незначащие цифры, используйте заместитель цифры # :
Если вы не знаете заранее каких минимальных значений могут достигать ваши числа, можно написать что-то вроде:
![]()
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Вывод в не экспоненциальной форме
В С++, при использовании типа double, для вычислений можно получить очень большой результат, но он выведется в экспоненциальной форме (это способ записи чисел с оставлением только одной цифры перед десятичным знаком и с использованием степеней 10-ки), что не всегда может быть удобно для дальнейшего использования результата вычисления. Для того, чтобы это исправить и выводить любое наше число в привычном (нормальном) виде необходимо сделать следующее:
Вывод float, double без экспоненты
Выводит float в виде -2.13323e+007. Как заставить нормально выводить — обычной дробью через cout?
![]()
![]()
Некрасиво, зато думать не надо 🙂
![]()
Вот, почитай на эту тему: http://savardge.narod.ru/cpp/article_cpp_t9.html
где n — число, обозначающее минимальную степень десятки, которая будет выводиться в экспоненциальном формате.
Т.е., при n=5 выводим 100000 как 1*10е5, а 99999 — не изменяя.
Однако при значениях n, близких к количеству знаков в целой части числа, дробная выводиться не будет, это стоит учитывать и брать n с запасом.
![]()
Если память не подводит, переменной не хватает диапазона значений. Используйте спецификатор long.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.