Подтвердить что ты не робот

Два десятичных знака с использованием printf()

Я пытаюсь записать число до двух знаков после запятой, используя printf() следующим образом:

#include <cstdio>
int main()
{
  printf("When this number: %d is assigned to 2 dp, it will be: 2%f ", 94.9456, 94.9456);
  return 0;
}

Когда я запускаю программу, я получаю следующий вывод:

# ./printf
When this number: -1243822529 is assigned to 2 db, it will be: 2-0.000000

Почему это?

Спасибо.

4b9b3361

Ответ 1

Вы хотите %.2f, а не 2%f.

Кроме того, вы можете заменить %d на %f;)

#include <cstdio>
int main()
{
printf("When this number: %f is assigned to 2 dp, it will be: %.2f ", 94.9456, 94.9456);
return 0;
}

Это выведет:

Когда этот номер: 94.945600 назначен на 2 dp, он будет: 94.95

См. здесь полное описание параметров форматирования printf: printf

Ответ 2

Используйте "%.2f" или варианты.

См. спецификацию POSIX для достоверной спецификации строк формата printf(). Обратите внимание, что он отделяет дополнительные функции POSIX от базовой спецификации C99. Есть несколько сайтов на С++, которые появляются в поиске Google, но некоторые, по крайней мере, имеют сомнительную репутацию, судя по комментариям, которые можно найти в других местах на SO.

Поскольку вы кодируете на С++, вам, вероятно, следует избегать printf() и его родственников.

Ответ 4

Попробуйте использовать формат, например% d.% 02d

int iAmount = 10050;
printf("The number with fake decimal point is %d.%02d", iAmount/100, iAmount%100);

Другой подход заключается в том, чтобы напечатать его дважды, прежде чем печатать его, используя% f, как это:

printf("The number with fake decimal point is %0.2f", (double)(iAmount)/100);

Мои 2 цента:)