float的问题,这是怎么回事?
下面这段VC示例代码:
LONG lon = -42813533; // 如果这个数小一些,就不会发生下面的奇怪现象,但是它并没有超出什么范围啊。
float flo = (float)lon;
TRACE("\n%f", flo);
TRACE("\n%f", flo);
if(flo - (float)lon <= -0.5 || flo - (float)lon >= 0.5)
TRACE("\n好奇怪的浮点数!");
我仅仅是把一个长整数变量转换成浮点数并保存到一个浮点变量中,得到的输出却是:
-42813533.000000
-42813532.000000
好奇怪的浮点数!
我觉得很奇怪,各位帮我看看是怎么回事,我有点懵了。