Выражение (int) cm % 100
сгруппировано как ((int) cm) % 100
, которое усекает cm
.Компиляция cm % 100
не удалась бы, поскольку %
требует целочисленных аргументов в C.
Используйте fmod(cm, 100)
для извлечения модуля с плавающей запятой и round
результат.Обе функции находятся в math.h
, т. Е.
(int)round(fmod(cm, 100))
является исправлением.
Но, тем не менее, вы можете обнаружить, что (int)round(cm) / 100
и (int)round(cm) % 100
возвращают более разумный вывод, если100cm
больше не возможен.
Наконец, проверьте поведение на наличие отрицательных входных данных, которые лично я бы запретил.