Поскольку %d
предназначен для печати целых чисел, не плавает. Вам нужна одна из строк формата с плавающей запятой, например %f
.
Обычные преобразования между типами данных здесь не работают, потому что printf
- это функция типа varargs, где вы можете в основном помещать в стек все, что захотите (или эквивалентно, если ваша реализация не основана на стеке), и, если он не соответствует тому, что находится в вашей строке формата, все ставки отключены - это неопределенное поведение.
См. здесь , чтобы узнать о том, что может пойти не так, если у вас есть такое несоответствие.