最大可表示的负浮点数

Bla*_*way 2 c c++ floating-point cross-platform ps3

指定最大可表示浮点数的独立于平台的方法是什么?

我们发现一个算法在 PS3 的 SPU 上运行时会出错,但在为 PPU 编译时运行良好:

float x = -FLT_MAX;
/* stuff */
if (x > 0.0f) {
    // If x is unchanged, code is executed on SPU
}
Run Code Online (Sandbox Code Playgroud)

本质上,是否有一个明确定义的负等价物FLT_MAX

nja*_*esp 6

你想要std::numeric_limits::lowest(),但它只是 c++0x,所以目前不是很跨平台。

你绝对不想要std::numeric_limits::min()- 这是最小的幅度,而不是最负面的。

如果您想要的东西总是少于所有其他双打,请使用-numeric_limits<double>::infinity().