为什么%和fmod()都存在于C中

Joh*_*lan 6 c math.h

我今天在我的CS课上参加了一个测验并得到了关于模运算符错误的问题,因为我不知道C中%的可用性,我一直在使用fmod().为什么两者都存在?是一个更好/更快还是只处理不同的数据类型?

VHS*_*VHS 8

modulo division%在C中使用运算符仅适用于整数操作数,并返回除法的整数余数.该函数fmod接受double作为参数意味着它接受非整数值并返回除法的其余部分.

关于fmod的补充说明:在double操作数的情况下如何计算余数?感谢@chux显示有关fmod如何计算浮点除法余数的文档.

由该函数计算的除法运算x/y的浮点余数恰好是值x-n*y,其中n是x/y,其小数部分被截断.

返回值与x具有相同的符号,并且在幅度上小于或等于y.

另一方面,当模数除法运算符(%)首次设计时,语言设计者确定它只支持"整数"类型的操作数,因为从技术上讲,数学中"余数"的概念仅适用到整数除法.


xen*_*ros 5

这是因为它%是整数运算符,fmod代表floatmod浮点数并用于浮点数。