这回我令y=0.2,采用第二种表达式来跟
调试的结果是这样的
0.6,1.2,2.4,3.4这几个数ceil后的结果和原数不相等,比原数大1
而在调试窗口看见的结果(比如0.6)是一个是3.0000,一个是4
这还不是最神奇的
2.6,3.2,4.2这几个数算出来更离谱
拿2.6来说吧,一个是13.0000,一个是13,可是这两个数相减居然得到一个很小的数
我想这可能是浮点数的存储中出现的问题
也许是我没有指定精度,导致小数点后出现了一些随机的数
可是这样的话也不对
因为既然存在这问题那对所有的数都是一样的,为什么有些数显示出来减的结果可以是0.00000呢
为什么啊·····
目前程序改成这样了
float f ;
f = m_sellNode/theApp.minArea;
float x = ceil(f);//ceil取不小于f的最小整数
float b = x - f;
if(b == 0 || b == 1 || b<=0.0001)
最后一个条件补上去后情况改善了好多,测试的数都没出错
可是,我想找到一个完全适合这种运算的函数
很奇怪为什么fmod会不行呢
其实原先我想用modf函数先吧整数,小数部分分开然后分别运算
可是这样不妥···
继续想
No comments:
Post a Comment