在寻找无穷大值时,我发现:
在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 = 10
,number > number - 1
将返回True
,number < number - 1
将返回False
。你知道吗
从算术的角度来看,
x < x - 1
的断言是正确的。然而,这不是计算机“思考”的方式。浮点数精度有限。即使这样也不成立:这是因为在使用双精度时
1e90 - 1
被舍入为1e90
。你知道吗使用无穷大值时也会发生类似的情况。在比较之前,评估表达
inf - 1
。 -inf - 1
的计算结果是什么?对represent positive infinity只有一个值,因此inf - 1
的计算结果为inf
。你知道吗因此,当你比较
inf < inf - 1
时,你实际上比较了inf < inf
,这就是你得到False
的原因。你知道吗无限不是一个数字,至少不是一个实的/复的数字。它不能在数学域中表示为单个值。因此,对“无穷大”执行算术或将其与任何事物进行比较都不是一个有意义的操作。你知道吗
但是IEEE勇敢的工程师们确实在他们的浮点标准中标准化了一种表示无穷大的方法。他们对“无穷大”的设想应该在IEEE-754中详细说明。你知道吗
相关问题 更多 >
编程相关推荐