这是一个非常简单的问题,但却非常重要,因为它会极大地影响我的整个项目。假设我有以下代码片段:
unsigned int x = 0xffffffff;
float f = (float)((double)x * (double)2.328306436538696e-010); // x/2^32
我期望f
是类似于0.99999这样的数字,但实际上它被四舍五入成了1,因为它是最接近的float
近似值。这不好,因为我需要在[0,1)区间内使用float
值,而不是[0,1]。我相信这是一个简单的问题,但我需要一些帮助。