关于浮点的运算要注意一点:
一日计算进度条的位置.得到的都是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 ^_^
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=112579