【问题标题】:Comparing two double variables Objective-C比较两个双变量Objective-C
【发布时间】:2011-07-10 04:19:09
【问题描述】:
double a = 10.123420834;
double b = 100.123412321;

if (a > b) {
// do something here
}

我正在尝试比较这两个值,上面的代码似乎不起作用。有什么想法吗?

【问题讨论】:

  • 什么不起作用? “在这里做点什么”部分是否正在执行,即使您的示例有一个
  • a 不大于b,所以// do something here 永远不会被执行。
  • 虽然我们在这里:为了真正的正确性,尽量避免将两个浮点变量相互比较;相反,尝试将它们之间的差异与一个小的“epsilon”进行比较——它们之间可接受的最小差异量,而它们仍然被认为是相等的。 floats 和 doubles 有一些细微差别,使它们在比较中表现得有趣;它并不总是像您期望的那样工作。

标签: iphone objective-c ios floating-point double


【解决方案1】:

代码是正确的。

请注意,您的 sn-p 等效于

float a = 10.123420834;
float b = 100.123412321;

if (a > b) {
// do something here
}

因为 Objective C 默认使用 double,除非数字后跟 f

还要注意a < b,因此if 语句将始终计算为FALSE。因此你可能想做

double a = 10.123420834;
double b = 100.123412321;

if (a > b) {
// do something here
} else {
// do something else here
}

正确测试。

【讨论】:

    【解决方案2】:
    double a = 10.123420834
    double b = 100.123412321
    

    您需要在每一行的末尾添加一个分号。

    【讨论】:

      【解决方案3】:

      您的示例中的代码是正确的。你的问题一定出在“在这里做点什么”,或者其他地方。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多