是否存在x + 1 == x的float类型的值x?

Yve*_*ann 6 c++ floating-point type-conversion

这是考试中的一个问题,但没有明确说明原因。这是一个对/错类型的问题;

存在一个类型为float的值x,该值保持:x + 1 == x ...

没错 为什么呢?

我想这与类型转换有关吗?但是我无法想象这将如何工作。

Bla*_*aze 8

当然。

#include <limits>
#include <iostream>
int main() {
    float f = std::numeric_limits<float>::infinity();
    std::cout << (f == f + 1) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

正如Deduplicator指出的那样,如果您float的大小足够大(对我来说适用float f = 1e20;),它也会起作用,因为添加的内容1超出float的准确性。

在线尝试

  • 不必无穷大,`1`早已微不足道。尽管公认的是,一路走来比较简单。 (3认同)