C 错误:获取浮点模数时,二进制%的操作数无效

C 错误:获取浮点模数时,二进制%的操作数无效,c,C,这是一个相当长的一周,所以原谅我,如果我是厚 我有一些代码,比如: float someFloat = 0; //....do some stuff to someFloat //.... if( someFloat % 1) { //take some action } 我得到一个编译器错误:错误:二进制%的操作数无效。 假设编译器不在药物上,这有什么问题 编辑:顺便说一下,我实际上想做的是检测非整数值并进行取整。 我应该做的是调用roundf(我猜是检查返回值是否小于操作数,如果是

这是一个相当长的一周,所以原谅我,如果我是厚

我有一些代码,比如:

float someFloat = 0;
//....do some stuff to someFloat
//....

if( someFloat % 1)
{
   //take some action
}
我得到一个编译器错误:
错误:二进制%的操作数无效。

假设编译器不在药物上,这有什么问题

编辑:顺便说一下,我实际上想做的是检测非整数值并进行取整。
我应该做的是调用roundf(我猜是检查返回值是否小于操作数,如果是,则递增,以确保我们已向上取整)

%
是一个整数运算符-用于双精度或浮点运算

或者,如果您希望浮点数表示整数值,则首先将其转换为
int
,例如:

if ((int)someFloat % 2 == 1) // if f is an odd integer value
{
    ...
}

模运算符仅适用于整数。对于浮点值,请使用或
fmodf

%这仅适用于整数。对于浮点值或双精度值,请使用fmod**

double fmod(double x, double y)


x -- This is the floating point value with the division numerator i.e. x.

y -- This is the floating point value with the division denominator i.e. y.

答案已经存在。还有一些问题,比如为什么不在float上工作?请查看是否有任何非零分数部分,请使用
ceilf
,而不是
roundf
。注:
ceilf
向无穷大方向旋转;如果你想让负数四舍五入到-无穷大(例如-3.25到-4),你需要额外的代码。@EricPostphil这几乎正是我想要的。但是我的目标上没有它,所以我想它是我的双版本
ceil
。。请查看您的C手册中的
%
。它将说明有效操作数是什么。查看
float
是否列为有效操作数。(剧透警报:不是。)嗯,我从来不知道。才干了15年。。。。只是看看我那可靠的旧K&R,就是这样。对我来说30年了,还在学习…;-)@保罗和几乎任何其他科学一样,我们永远无法完全学习一门语言是的——当然,30年后,你开始怀疑有些事情你曾经知道,然后忘记,然后不得不再次学习……;-)@保罗R:谢谢你的fmodhint@downvoter(我们都知道你是谁):嘿!那真的很成熟。