比较无穷大

时间:2019-03-28 07:24:34

标签: python c++ infinity

在寻找无穷大时,我发现: 对于Python 3.7,INFINITY > INFINITY - 1返回False,如果我们执行INFINITY < INFINITY - 1,则返回相同。

在使用C ++的情况下,我得到的结果也是False

这是因为我们没有为INFINITY定义正确的信息吗?现在,我们只知道这是一个很大的数字,我们不能说INFINITY在某个特定数字'X'之后开始。

回到问题所在: 现在,某个数字x明显大于x-1。为什么INFINITY不是这种情况?

Python代码:

A = float('inf')
B = float('inf')

print(A > B-1) # returns False
print(A < B-1) # returns False

C ++代码:

#include <iostream>
#include <limits>
using namespace std;

int main() {
    double a = numeric_limits<double>::infinity();
    double b = numeric_limits<double>::infinity();

    if (a>(b-1)){cout<<"TRUE";}
    else {cout<<"FALSE"<<endl;} //returns else part- FALSE

    if (a<(b-1)){cout<<"TRUE";}
    else {cout<<"FALSE";} //returns else part- FALSE

    return 0;
}

对于其他任何number = 10number > number - 1将返回True,而number < number - 1将返回False

2 个答案:

答案 0 :(得分:2)

从数学上讲,断言与regex.DOTALL是正确的。但是,这不是计算机“思考”的方式。浮点数的精度有限。甚至不成立:

x < x - 1

这是因为在使用双精度时print(1e90 < 1e90 - 1) # False print(1e90 == 1e90 - 1) # True 会四舍五入到1e90 - 1

使用 infinity 值时,也会发生类似的情况。在比较之前,对表达式1e90进行求值。 inf - 1对什么进行评估? represent positive infinity只有一个值,因此inf - 1的值为inf - 1

因此,当您比较inf时,实际上是比较inf < inf - 1,这就是为什么您得到inf < inf的原因。

答案 1 :(得分:0)

无穷大不是数字,至少不是实数/复数。它不能在数学域中表示为单个值。因此,对“无穷大”执行算术运算或将其与任何事物进行比较都不是有意义的操作。

但是,英勇的IEEE工程师确实在浮点标准中标准化了一种表示无穷大的方法。他们对“无限”的愿景应在IEEE-754中明确规定。