Перейти к содержимому

Как ограничить количество знаков после запятой в c

  • автор:

Количество знаков после запятой c++

Если выводить с помощью СИшного printf(«%.9f», res) — выводится 4.000000000, 1.500000000 При выводе с помощью std. cout
Отслеживать
219k 15 15 золотых знаков 119 119 серебряных знаков 230 230 бронзовых знаков
задан 17 дек 2019 в 17:46
13 1 1 золотой знак 1 1 серебряный знак 5 5 бронзовых знаков
Ничего не понял. 8./2. — это и есть 4.000000000 , а 3./2. — это и есть 1.500000000 . В чем проблема?
17 дек 2019 в 20:16
В постановке задачи. Мне нужен именно такой формат вывода, который я описал.
17 дек 2019 в 23:30

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

cout  
2.714285714 

Смотрите всякие разности форматирования тут.

Отслеживать
ответ дан 17 дек 2019 в 17:50
219k 15 15 золотых знаков 119 119 серебряных знаков 230 230 бронзовых знаков

Для 19 и 7 Ваш вариант сработал. Но есть 2 проблемы: при 8.0/2.0 выводит 4, а мне нужен вывод 4.0; при, например, 40.0/3.0 выводит только 8 значений после запятой

17 дек 2019 в 18:04
Ну поднимите точность - она учитывает все знаки.
17 дек 2019 в 18:12

  1. Деление целочисленных дает целочисленное, остаток отсекается.
  2. По умолчанию вещественные имеют тип данных double , в спецификации формата printf() он указывается как %lf .
printf("%.9f",19.0F/7.0F); // float -> double printf("%.9lf",19.0/7.0); // double -> double printf("%.9Lf",19.0L/7.0L); // long double -> long double 

Подробнее можно почитать тут и тут.

Отслеживать
ответ дан 17 дек 2019 в 17:48
1,947 5 5 серебряных знаков 24 24 бронзовых знака

неверно. в printf double — это как раз %f , а %Lf — это уже long double . Спецификатора формата %lf в принципе нет.

17 дек 2019 в 19:10

преобразовывать в double . и да для scanf 'а значения спецификаторов отличаются. это один из старых квирков Си.

17 дек 2019 в 19:31

@Πανμέτρονάριστον Можно тоже как %f . При передаче float в сишный . -параметр он автоматически преобразуется в double . См. en.cppreference.com/w/cpp/io/c/fprintf

17 дек 2019 в 19:31

@Fat-Zer Посмотрел cppreference. Там написано, что %lf есть (добавили в C++11/C99), и не отличается от %f (оба могут и в float и double ).

17 дек 2019 в 19:34
@HolyBlackCat, да. моя ошибка. %lf — это тоже что и %f по всем стандартам.
17 дек 2019 в 19:47

Если выводить с помощью СИшного printf("%.9f", res)

Просто используй спецификатор %g:

printf("%.9g", 19./7); // 2.71428571 printf("%.9g", 3./2); // 1.5 printf("%.9g", 8./2); // 4 printf("%.9g", sqrt(10101)); //100.503731 

Стоит помнить, что это 9 значащих цифр, а не 8 цифр после точки. Если нужно именно последнее, то можно сделать как-то так:

double res = sqrt(10101); printf("%.*g\n", 8 + 1 + (int)log10(res), res); // 100.50373127 

как ограничить число знаков после запятой в типе float (Си)?

Тип float всегда с одним и тем же количество знаков. А выводить на экран можно с любым количеством знаков и в любом формате - это зависит от того, какой функцией выводить, у каждой свои параметры.

printf("%.3f", float_val);
выводит три знака после запятой

Похожие вопросы

Ваш браузер устарел

Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.

Как в C# вывести число с определенным количеством знаков после запятой?

Planet_93

Здрасьте, я ещё совсем новичок в сфере программирования, но хотелось бы оставить свой ответ на случай, если у такого же неопытного юнца, как я, возникнет какая-то схожая проблема
Перед выводом, после всех исчислений, можно воспользоваться таким методом:
double c = Math.Round(c, 2);

Ответ написан более двух лет назад
Комментировать
Нравится 1 Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

c#

  • C#
  • +1 ещё

Как проверять столкновение префаба и UI панели в Unity?

  • 1 подписчик
  • 2 часа назад
  • 13 просмотров

Как сокращать количество цифр после запятой при выводе C++?

KravchaDev

программирование

  • Программирование
  • +1 ещё

Стоит ли изучать C++ в 2024?

  • 1 подписчик
  • 4 минуты назад
  • 22 просмотра

cpp

  • C++

Не могу, понять как компьютер перемещает свой знак?

  • 1 подписчик
  • 16 часов назад
  • 77 просмотров

cpp

  • C++
  • +2 ещё

Почему не компилируется код C++ в VS code/Platformio?

  • 1 подписчик
  • 19 часов назад
  • 66 просмотров

cpp

  • C++

Что быстрее индексы или указатели?

  • 1 подписчик
  • 03 янв.
  • 172 просмотра

c#

  • C#
  • +4 ещё

Как реализовать движение частиц в векторном поле или сплошной среде?

  • 1 подписчик
  • 03 янв.
  • 106 просмотров

windows

  • Windows
  • +2 ещё

Как отлавливать курсор при наведении на дочернее окно?

  • 1 подписчик
  • 02 янв.
  • 118 просмотров

cpp

  • C++

Как обеспечивается совместимость динамических библиотек при ликовке в рантайме?

  • 3 подписчика
  • 30 дек. 2023
  • 312 просмотров

cpp

  • C++

Как установить библиотеку c++ если в папке lib пусто и при запуске ошибка LINK2019?

  • 1 подписчик
  • 29 дек. 2023
  • 57 просмотров

cpp

  • C++

Как лучше добавить перед структурой ещё одну и поместить в массив?

  • 1 подписчик
  • 29 дек. 2023
  • 71 просмотр

cpp

  • C++

Почему прога билдится, но не запускается?

  • 1 подписчик
  • 28 дек. 2023
  • 97 просмотров

До 175 000 ₽

Bell Integrator • Екатеринбург

До 150 000 ₽

Bell Integrator • Санкт-Петербург

До 150 000 ₽

08 янв. 2024, в 17:01

10000 руб./за проект

08 янв. 2024, в 17:00

3000 руб./за проект

08 янв. 2024, в 16:52

1500 руб./в час

Минуточку внимания

Присоединяйтесь к сообществу, чтобы узнавать новое и делиться знаниями

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *