生成下一个最大或最小可表示的浮点数而不会产生比特错误

tgo*_*art 18 c++ floating-point

给定一个任意有限的浮点数,有没有办法确定下一个可表示的浮点数?例如,给定1.0f,根据定义,下一个最大可表示的数字是1.0f + std :: numeric_limits <float> :: epsilon().有没有一种方法可以合成任何值的epsilon - 而不仅仅是1.0f - 而不需要依赖于对机器如何表示浮点值的位置和/或显式知识?

Ste*_*non 21

在C++ 11中,您使用std::nextafter().缺乏的是,C99的系统,您可以使用上nextafterf, nextafternextafterl从C数学库(对于类型float,doublelong double,分别).