繁体   English   中英

最大可表示负浮点数

[英]Largest representable negative floating-point number

什么是与平台无关的指定最大可表示浮点数的方法?

我们在PS3的SPU上运行时发现了一个破解的算法,但在为PPU编译时工作正常:

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

从本质上讲,是否有明确定义的负面等效FLT_MAX

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

你肯定不希望std::numeric_limits::min() - 这是最小的量级,而不是最远的负数。

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

不知道/ * stuff * /中的内容,我认为你的问题不能完全解决。

这里有关于浮点计算固有问题的一组很好的幻灯片: http//realtimecollisiondetection.net/pubs/GDC07_Ericson_Physics_Tutorial_Numerical_Robustness.ppt - 对于你的问题来源,你可能会有一些提示。

SPU上的IEEE 754单精度浮点与PPU上的不一样 - 在http://cell.scei.co.jp/e_download.html提供的SPU ISA文档的第9章中有完整的解释。还包括单精度浮点数的最大幅度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM