在寻找无穷大时,我发现:
对于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 = 10
,number > number - 1
将返回True
,而number < number - 1
将返回False
。
答案 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中明确规定。