|
|
不知道谁遇见过这样的问题
在directx初始化之前,所有的计算都是正确的
例如:
double a1, a2, a3;
a1=1000000;
a2=0.00001;
a3=a1+a2; //此时a3=1000000.00001;
当
g_pD3D->CreateDevice(
D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp,
&g_pd3dDevice)
)
调用成功后,所有的double类型数值计算就都变成float了,
a3=a1+a2; //此时a3=1000000.0000;因为在float中的阶数不足以同时表达两个相差太大的数
小数计算也有同样的问题,只是不明显而以,例如0.001+0.001=0.00199....而不再等于0.002
我用它自带的例子也是如此
是我的系统有问题,还是dx有问题?
为什么呢? 各位高手快帮忙啦~
我的开发环境vc6+sp5/dxsdk9b/xp+sp2
[em7] |
|