Это была довольно долгая неделя, так что простите меня, если я буду густым.ошибка: недействительные операнды до двоичных% при приеме модуля float
У меня есть некоторый код, как:
float someFloat = 0;
//....do some stuff to someFloat
//....
if(someFloat % 1)
{
//take some action
}
Я получаю ошибку компиляции: error: invalid operands to binary %
Предполагая, что в Isnt компилятор на наркотики, что не так с этим?
РЕДАКТИРОВАТЬ: В качестве стороннего, что я на самом деле хотел сделать, это обнаружить нецелое значение и округлить. То, что я должен был делать звали roundf (и я предполагаю, что проверка, если возврат меньше операнда, а затем увеличивающееся если это так, чтобы позаботиться о том, мы облавах)
Ответ уже есть. Еще один вопрос: «Почему не работает над float_? пожалуйста, посмотрите на [why-do-moduleulus-division-only-work-with-integers?] (http://stackoverflow.com/questions/6102948/why-does-modulus-division-only-work-with- integers) –
Чтобы округлить, если есть ** какая-либо ** ненулевая часть дроби, используйте 'ceilf', а не' roundf'. Примечание: 'ceilf' округляется к бесконечности; если вы хотите, чтобы отрицательные числа округлились до -инфиниции (например, от -3,25 до -4), вам понадобится дополнительный код. –
@EricPostpischil thats почти точно, что я хочу. Я не имею его на моей цели, хотя, поэтому я предполагаю, что это двойная версия 'ceil' для меня ... – mjs