我今天在我的CS课上参加了一个测验并得到了关于模运算符错误的问题,因为我不知道C中%的可用性,我一直在使用fmod()
.为什么两者都存在?是一个更好/更快还是只处理不同的数据类型?
modulo division
%
在C中使用运算符仅适用于整数操作数,并返回除法的整数余数.该函数fmod
接受double
作为参数意味着它接受非整数值并返回除法的其余部分.
关于fmod的补充说明:在double
操作数的情况下如何计算余数?感谢@chux显示有关fmod如何计算浮点除法余数的文档.
由该函数计算的除法运算x/y的浮点余数恰好是值x-n*y,其中n是x/y,其小数部分被截断.
返回值与x具有相同的符号,并且在幅度上小于或等于y.
另一方面,当模数除法运算符(%)首次设计时,语言设计者确定它只支持"整数"类型的操作数,因为从技术上讲,数学中"余数"的概念仅适用到整数除法.
这是因为它%
是整数运算符,fmod
代表floatmod
浮点数并用于浮点数。