比较无穷大

2024-05-12 22:39:44 发布

您现在位置:Python中文网/ 问答频道 /正文

在寻找无穷大值时,我发现: 在python3.7中,INFINITY > INFINITY - 1返回False,如果执行INFINITY < INFINITY - 1,则返回相同的结果。你知道吗

在C++的情况下,得到的结果也同样是^ {CD2>}。你知道吗

发生这种情况是因为我们对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将返回Truenumber < number - 1将返回False。你知道吗


Tags: 代码falsenumber情况数字floatelsereturns
2条回答

从算术的角度来看,x < x - 1的断言是正确的。然而,这不是计算机“思考”的方式。浮点数精度有限。即使这样也不成立:

print(1e90 < 1e90 - 1)  # False
print(1e90 == 1e90 - 1)  # True

这是因为在使用双精度时1e90 - 1被舍入为1e90。你知道吗

使用无穷大值时也会发生类似的情况。在比较之前,评估表达inf - 1。 -inf - 1的计算结果是什么?对represent positive infinity只有一个值,因此inf - 1的计算结果为inf。你知道吗

因此,当你比较inf < inf - 1时,你实际上比较了inf < inf,这就是你得到False的原因。你知道吗

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

但是IEEE勇敢的工程师们确实在他们的浮点标准中标准化了一种表示无穷大的方法。他们对“无穷大”的设想应该在IEEE-754中详细说明。你知道吗

相关问题 更多 >