Я не понимаю, как код относится к точке оператора плавающим по модулю, что вы упоминаете. Такой оператор преобразует float в целые числа; вашего кода нет.
Если такое преобразование желательно, используйте функцию modff
из стандартной библиотеки.
#include <math.h>
float a, dummy;
...
a = modff(a, &dummy);
Если вы не хотите такого преобразования, ответ @devnull является правильным переписывание кода. Если, кроме того, вы хотите «включить верхнее значение» и, например, имеют 1 карту в 1, тогда у вас немного проблемы, так как это включает проверку того, является ли число с плавающей запятой целочисленным или нет. Чтобы сделать это переносимо, я бы предложил снова использовать modff
.
СИНТАКСИС
float modff(float x, float *iptr);
Связь с -lm
.
ОПИСАНИЕ
modf()
функция разбивает аргумент x
в качестве составной части и дробную часть, каждая из которых имеет один и тот же знак, что и x
. Часть интеграла хранится в месте, на которое указывает iptr
.
Удивительный! Благодаря! – Coolant