首页 > 代码库 > 典型的检查对float精度理解的代码

典型的检查对float精度理解的代码

  ...
1
vx = 0.0000007f * (rand()%9000-rand()%9000);2 vy = 0.0005f * (rand()%9000);3 vz = 0.0000001f * (rand()%9000);4 pList_particle[i].m_velocity = Vector3(vx,vy,vz);
...

1,3行代码的vx和vz的值域可以通过数学方法计算,而0.0000007f和0.0000001f在运算时是否存在精度丢失从而影响到运算结果?

分析这种问题只能从float存储格式入手,先把两个浮点数化为二进制形式.网上有很多文章,推荐看:http://www.cnblogs.com/yewsky/articles/1864934.html的举例:0.2356存储格式

最起码的也得知道:float是32bit,1bit是float变量的符号位,8bit是float变量的二进制科学计数法的指数位(-127~128),23bit是float变量的二进制科学计数法的尾数位.

 

典型的检查对float精度理解的代码