c++ numeric_limits<double>::epsilon() 对于 1 以外的值

c++ numeric_limits<double>::epsilon() for values other than 1

numeric_limits<double>::epsilon() 被定义为 1.0 和下一个可以用 double 表示的值之间的差值,但是我想 find/calculate 1.0 以外的值的 numeric_limits<double>::epsilon()?有什么办法吗?

正如评论中指出的那样,您可以使用 std::nextafter:

float       nextafter ( float from, float to );

Returns the next representable value of from in the direction of to.

float f = /* ... */
float next_after_f = std::nextafter(f, std::numeric_limits<float>::infinity());