关于浮点的运算要注意一点:

一日计算进度条的位置.得到的都是0,甚是奇怪,原来,浮点做怪。

类似:
 for(int x= 0; x<128; x++)
{
     int  pos = (100/127*x);
}
那日计算不小心按照了以前学数学的写法,写下了pos = (100/127*x)。-_-
结果当然是pos = 0;-_-

浮点转整型在做怪。由于转整型是,整型数据会截尾。因此。
100/127 如果直接转整型,自然为0,0*X =0 -_-;

修改成:
double db = (dobule)(100/127);
 for(int x= 0; x<128; x++)
{
     int  pos = (db*x);
}

或者是:
 for(int x= 0; x<128; x++)
{
     int  pos = (100*x/127);
}

基本上就没问题了^_^

还有转型截尾的问题:

double a=1.001;
int aaa;
double g=(double)(a*1000);
如果直接将转:
aaa = g; //aaa = 1000
aaa = (int)(g+0.000001); //aaa = 1001;

关于浮点运算的文章:
浅谈浮点型“(1.1+1.2)!=2.3” http://www.cnblogs.com/oldjacky/archive/2004/06/20/14367.aspx

www.google.com  ^_^

 


1条评论

  1. Not a problem of float.

    U should not declare a integer variable.

发表评论

评论也有版权!