【发布时间】:2015-07-09 15:09:39
【问题描述】:
为什么模数运算符只扩展到原始类型,例如 int、longs shorts 等,而不是浮动数据类型,例如 float 和 double?
【问题讨论】:
-
您可以使用
fmod()对浮点数和双精度数进行取模
标签: c numbers modulus primitive-types
为什么模数运算符只扩展到原始类型,例如 int、longs shorts 等,而不是浮动数据类型,例如 float 和 double?
【问题讨论】:
fmod() 对浮点数和双精度数进行取模
标签: c numbers modulus primitive-types
这取决于你如何定义模数。
13 % 5 是 3,因为这是在整数域中进行除法时剩下的内容。
在实数域中(不限于整数结果),13.0 % 5.0 的结果将为零,因为 13 除以 5,得到 1.6。
现在 C 确实具有一个浮点模数函数fmod,但它更像是两个域之间的混合体。例如,fmod (18.5, 4.2) 给出1.7,即从18.5 中减去4.2 的最大整数 个值而不变为负数时剩余的数量。
但这不是 % 模数运算符。
【讨论】: