【发布时间】:2010-09-03 05:40:55
【问题描述】:
什么是指定最大可表示负浮点数的独立于平台的方法?
我们发现一种算法在 PS3 的 SPU 上运行时会出错,但在为 PPU 编译时运行良好:
float x = -FLT_MAX;
/* stuff */
if (x > 0.0f) {
// If x is unchanged, code is executed on SPU
}
本质上,是否存在明确定义的与 FLT_MAX 等效的负数?
【问题讨论】:
-
检查here。 可能有用
-
为什么不使用负无穷大?
-
除非 SPU 和 PPU 具有不同的浮点精度,否则应该可以。我怀疑代码中注释掉的 /*stuff*/ 部分存在问题。
-
目前还不清楚(对我来说,无论如何)你期望代码做什么以及它实际做什么。考虑到浮点数的表示方式,
FLT_MAX的负数不就是-FLT_MAX(您已经在使用)吗?究竟是什么不工作? -
@stacker -
FLT_MIN != -FLT_MAX
标签: c++ c cross-platform floating-point ps3