【问题标题】:How to divide by zero without error如何除以零而不会出错
【发布时间】:2013-06-04 18:47:15
【问题描述】:

我需要获得浮点 NaN 和无穷大,但我不能使用这样的构造

0. / 0.
1. / 0.

因为它会导致编译时间

错误 C2124:除以零或取模

编辑,很高兴知道我在哪里可以得到这个数字(每个+1),但是可以除以零吗?

【问题讨论】:

  • 数学事实:除以 0 是不可能的。
  • 为什么要除以零?您的编译器可能有一个允许这样做的标志。这不是我平台上的编译器错误。
  • @juanchopanza,好的,谢谢
  • 这个问题完美地突出了为什么当有人问一个看似奇怪的问题时,我们必须回过头来:“嗯​​,你想实现什么?不要告诉我们你的解决方案。告诉我们您的问题。”
  • @MarkusMeskanen 浮点事实:1. / 0. 定义为 +inf0. / 0. 定义为 NaN

标签: c++ compiler-errors floating-point nan


【解决方案1】:

您可以简单地返回 NaN 或无穷大,例如:

return std::numeric_limits<float>::quiet_NaN();

return std::numeric_limits<float>::infinity();

参见std::numeric_limits,来自标头&lt;limits&gt;

【讨论】:

  • 全部位于标头&lt;limits&gt;
  • @tehinternetsismadeofcatz 我添加了那个,以及一个参考链接。
【解决方案2】:
猜你喜欢
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-14
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
相关资源
最近更新 更多