为什么 C 和 C++ 中没有针对浮点数的取模运算符?

5
这段代码在C和C++中无法工作,但在C#和Java中可以运行:

可能是重复的问题:
为什么取模运算(%)只能用于整数?

float x = 3.4f % 1.1f;
double x = 3.4 % 1.1;

此外,Python中也为实数定义了除法余数。

为什么C和C ++中未定义浮点数和双精度浮点数的此操作?

1个回答

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

(6.5.5 乘法运算符) C89委员会拒绝将%运算符扩展到浮点类型,因为这样的用法会重复提供fmod提供的功能(参见§7.12.10.1)。


他们为什么做出了那个决定? - Stephen Collings
1
@Remiel 因为这样的用法会重复fmod提供的功能 - ouah
1
是的,我看到了答案。让我重新表述我的问题:作为语言设计的一部分,为什么将fmod功能集成到核心语言中会不可取? - Stephen Collings

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接