Два десятичных знака с использованием 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
Почему это?
Спасибо.
Ответы
Ответ 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()
и его родственников.
Ответ 3
В разделе %d
обратитесь к этому Как эта программа работает?, а для десятичных знаков используйте %.2f
Ответ 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 цента:)