可能重复:
Why does modulus division (%
) only work with integers?
此代码在C和C ++中不起作用,但在C#和Java中起作用:
float x = 3.4f % 1.1f;
double x = 3.4 % 1.1;
此外,在Python中为reals定义了除法余数。
为C和C ++中的浮点数和双精度数定义此操作的原因是什么?
答案 0 :(得分:20)
C委员会在Rationale文件中解释了为何浮动类型没有余数运算符的立场:
(6.5.5乘法运算符) C89委员会拒绝扩展%运算符以处理浮点类型,因为这样的用法会复制fmod提供的工具(见§7.12.10.1)。 p>