【问题标题】:How I can solve C++ output negative numbers when using modulo? [duplicate]使用模数时如何解决 C++ 输出负数? [复制]
【发布时间】:2020-09-23 04:21:12
【问题描述】:

在我编写的代码中,我使用了以下两个函数来计算显示的负数的模数。

fmod(-10,11)
(-10, 11)

虽然 correct answer is 1。它始终显示c++ 中的答案-10。我该如何解决?

【问题讨论】:

标签: c++ mod


【解决方案1】:

From cppreference.com:

double fmod (double numer, double denom);
此函数计算的除法运算x/y 的浮点余数正是值x - n*y,其中nx/y,其小数部分被截断。
返回值与x 符号相同,幅度小于y

在您的情况下,它是-10 - (-10)/11 * 11 = -10 - 0 * 11 = -10,这对于fmod 的实现是正确的。如果您需要其他答案,您应该实现自己的版本,因为 modulo 以不同的方式定义负数。

【讨论】:

  • cplusplus.com 不是“C++ 参考”,因为其中存在多个错误。 cppreference.com 至少尝试尽可能地遵循 C++ 标准。
  • 我的错,看看标签名称,上面写着“fmod - C++ Reference”。
  • 由于提到的原因:您应该避免将新用户链接到有潜在错误的站点,而不是实际的 C++ 参考。
  • 通常我不愿意诋毁许多善意的工作,但我可以确认,我经常被错误/不完整的信息误导,直到现在我从未有过这样的经历cppreference
猜你喜欢
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
  • 2022-01-07
  • 1970-01-01
相关资源
最近更新 更多