为什么C和C ++中的浮点数/双精度数没有除法余数运算?

时间:2012-07-14 20:25:59

标签: c# java c++ c division

  

可能重复:
  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 ++中的浮点数和双精度数定义此操作的原因是什么?

1 个答案:

答案 0 :(得分:20)

C委员会在Rationale文件中解释了为何浮动类型没有余数运算符的立场:

  

(6.5.5乘法运算符) C89委员会拒绝扩展%运算符以处理浮点类型,因为这样的用法会复制fmod提供的工具(见§7.12.10.1)。 p>