Как убрать экспоненту в c

от admin

Вывод 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».

По умолчанию при преобразовании числа в строку (а для вывода его на экран это обязательно) выбирается кратчайшая запись между обычной (как вы привыкли со времен школы) и экспоненциальной. Чтобы изменить это поведение, вам придется указать формат явно.

Для того чтобы форматтер отбрасывал незначащие цифры, используйте заместитель цифры # :

Если вы не знаете заранее каких минимальных значений могут достигать ваши числа, можно написать что-то вроде:

Андрей NOP's user avatar

Дизайн сайта / логотип © 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?

Nicolas Chabanovsky's user avatar

Ray's user avatar

Некрасиво, зато думать не надо 🙂

Nicolas Chabanovsky's user avatar

Вот, почитай на эту тему: http://savardge.narod.ru/cpp/article_cpp_t9.html

где n — число, обозначающее минимальную степень десятки, которая будет выводиться в экспоненциальном формате.

Т.е., при n=5 выводим 100000 как 1*10е5, а 99999 — не изменяя.

Однако при значениях n, близких к количеству знаков в целой части числа, дробная выводиться не будет, это стоит учитывать и брать n с запасом.

aleksandr barakin's user avatar

Если память не подводит, переменной не хватает диапазона значений. Используйте спецификатор long.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Похожие статьи