【问题标题】:Why does the modulus operator not extend to other data types besides integer types? [duplicate]为什么取模运算符不扩展到除整数类型之外的其他数据类型? [复制]
【发布时间】:2015-07-09 15:09:39
【问题描述】:

为什么模数运算符只扩展到原始类型,例如 int、longs shorts 等,而不是浮动数据类型,例如 float 和 double?

【问题讨论】:

  • 您可以使用 fmod() 对浮点数和双精度数进行取模

标签: c numbers modulus primitive-types


【解决方案1】:

这取决于你如何定义模数。

13 % 53,因为这是在整数域中进行除法时剩下的内容。

在实数域中(不限于整数结果),13.0 % 5.0 的结果将为零,因为 13 除以 5,得到 1.6

现在 C 确实具有一个浮点模数函数fmod,但它更像是两个域之间的混合体。例如,fmod (18.5, 4.2) 给出1.7,即从18.5 中减去4.2 的最大整数 个值而不变为负数时剩余的数量。

但这不是 % 模数运算符。

【讨论】:

  • 我猜这与大多数除法问题中的小数永远不会结束有关(您可以继续在被除数中添加更多零,而您只会在商中得到更多零)。特别是当您处理重复小数时。这就是我认为为什么模运算符只进行整数除法的原因(主要是因为你到达了无法继续的地方)。
猜你喜欢
  • 2020-04-22
  • 2012-11-04
  • 2019-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
  • 2015-06-14
相关资源
最近更新 更多