【发布时间】:2013-10-11 11:41:10
【问题描述】:
这是一个相当长的一周,如果我很厚,请原谅我。
我有一些类似的代码:
float someFloat = 0;
//....do some stuff to someFloat
//....
if( someFloat % 1)
{
//take some action
}
我得到一个编译器错误:error: invalid operands to binary %
假设编译器不吸毒,这有什么问题?
编辑:顺便说一句,我真正想做的是检测非整数值并四舍五入。 我应该做的是调用roundf(我想检查返回值是否小于操作数,如果是则递增,以确保我们已经四舍五入)
【问题讨论】:
-
答案已经存在。对于诸如为什么不使用float之类的更多问题?请查看why-does-modulus-division-only-work-with-integers?
-
如果有 any 个非零小数部分,请使用
ceilf,而不是roundf。注意:ceilf向无穷大舍入;如果您希望负数向 -infinity 四舍五入(例如,-3.25 到 -4),则需要额外的代码。 -
@EricPostpischil 这几乎正是我想要的。不过我没有把它放在我的目标上,所以我想它是我的双重版本
ceil... -
查看
%下的C 手册。它将说明有效的操作数是什么。查看float是否被列为有效操作数。 (剧透警告:不是。)
标签: c