【问题标题】:How to check if a number is zero? [closed]如何检查一个数字是否为零? [关闭]
【发布时间】:2014-01-31 01:47:42
【问题描述】:
if(number == 0) {
 //do something
}

由于在 C++ 中零的计算结果为假,如果一个数字为零,则在 if 条件下将是假的。 如何检查它是否真的是数字零?

【问题讨论】:

  • 你的代码没问题。当number0 时,number == 01,这是真的。
  • 您的代码将起作用。测试一下。
  • 是的,我想我问错了问题...
  • 您应该删除问题以保存您的声誉:)
  • @ᴍarounᴍaroun 我假设 OP 正在采取行动,因为他实际上有问题,而浮点就是这种情况。

标签: c++ types


【解决方案1】:

如果number 是浮点数,您可能会遇到一些麻烦。如果这是您的情况,只需与一个合理的零值左右比较。看看这篇文章http://floating-point-gui.de/errors/comparison/我相信你可以更好地理解这个问题。 简单的例子:

#define epsilon 0.0001;
if( fabs(number) < epsilon ){
   ....
}

选择正确的 epsilon 可能很棘手,具体取决于应用程序。

【讨论】:

    【解决方案2】:

    这里有个误解:if 语句不是关于0 常量或number 的值,而是关于operator== 的返回值。

    关键不是数字或0本身是否等同于“假”,而是==是否返回真。如果操作数具有相同的值,则返回 true。

    就整数类型提升工作而言,上述断言适用于任何一对整数类型。

    如果number 是别的东西,那么所有这些都与numberint 之间的通用类型的可转换性有关(因为0 是一个int)以及number 值可能具有的“精度”,或者operator==在这两种类型之间的实现方式。

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 2011-04-13
      • 2014-06-24
      • 1970-01-01
      • 2010-10-25
      相关资源
      最近更新 更多