急问:c 把 0.05 付给 double时候 不是 0.050000x 最后还有一个非0数字 x,影响最终结果,怎样解决!我不想要最后x

时间:2008-05-09 09:22:47   来源:论坛整理  作者:  编辑:chinaitzhe

c 把 0.05 付给 double时候 不是 0.050000x 最后还有一个非0数字 x,
这个使得我的画图结果受到影响,怎样解决!我不想要最后x,也会影响我的循环次数。

谢谢!!
网友回复:只是简单的赋值,怎么能多出一个x,不理解...
网友回复:代码贴出来...

还有,double怎么会影响你的循环?难道你的循环变量是用double的???
网友回复:double有精度问题
赋值前的0.05其实也是后面有x的,只是你要求精度2位所以没有x
你用一个2位精度的赋值给另一个数字,那么结果也要用2位精度
double的判定一般这样
//浮点数比较,a <b返回-1 ,a>b返回1 ,a=b返回0
int FloatComp(double a,double b, double dEpsilon/* = 1e-6*/)
{
double d = dEpsilon;
if (d < EPSILON)
{
d = EPSILON;
}
double c = a - b;
if(c > d)
return 1;
if(c < -d)
return -1;
return 0;
}
网友回复:

引用楼主 crystalvilly 的帖子:
c 把 0.05 付给 double时候 不是 0.050000x 最后还有一个非0数字 x,
这个使得我的画图结果受到影响,怎样解决!我不想要最后x,也会影响我的循环次数。

这是十进制小数到二进制小数变换不可避免的情况。

对于影响画图结果和循环次数,不知道具体情况如何,不好说。

一个变通的办法是,不用浮点数,把数值全部变为整数处理。比如所有参数都 × 20 变为整数进行计算。
网友回复:谢谢楼上热心的几位!

我想要计算的。不是单单比较大小阿。。。
就是t 用于别的变量的求值。
谢谢各位!
网友回复:
引用 5 楼 crystalvilly 的回复:
我想要计算的。不是单单比较大小阿。。。
就是t 用于别的变量的求值。
谢谢各位!

根据需要,变换为整数或浮点数。
不清楚算法,没法给出更具体的方案。

关键字:0.05,付给,double,时候,0.050000,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面