Здесь вы делаете две вещи: 1) вычисление округленного значения числа и 2) печать этого числа.
вычисление округленного значения
Вы в значительной степениделаю это правильно.Имейте в виду, что при имплицитном преобразовании float
в int
C делает усечение, а не округление, поэтому:
float f = 1.9;
int i = f;
устанавливает i
в 1
, а не 2
.В вашем случае, если вы вводите «1,229 2», вы рассчитываете значение 1,22, а не 1,23.Это может быть то, что вы хотите, но не можете.Если вы хотите округлить с вместо до нуля , вы можете изменить это:
int num3 = num * power;
на:
int num3 = 0.5 + num * power;
Печатьокругленное значение
Как только вы вычислили значение, вы печатаете его.Если вы хотите напечатать только количество десятичных разрядов, до которых вы округлили, вы можете использовать поле точности printf()
, например:
printf("%.*f\n", decimals, a);