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
好奇怪的浮点数!
我觉得很奇怪,各位帮我看看是怎么回事,我有点懵了。
[解决办法]
已经超出范围了