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

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

谢谢!!
...全文
130 6 打赏 收藏 转发到动态 举报
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
rushman 2008-04-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 crystalvilly 的回复:]
我想要计算的。不是单单比较大小阿。。。
就是t 用于别的变量的求值。
谢谢各位!
[/Quote]
根据需要,变换为整数或浮点数。
不清楚算法,没法给出更具体的方案。
crystalvilly 2008-04-13
  • 打赏
  • 举报
回复
谢谢楼上热心的几位!

我想要计算的。不是单单比较大小阿。。。
就是t 用于别的变量的求值。
谢谢各位!
rushman 2008-04-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 crystalvilly 的帖子:]
c++ 把 0.05 付给 double时候 不是 0.050000x 最后还有一个非0数字 x,
这个使得我的画图结果受到影响,怎样解决!我不想要最后x,也会影响我的循环次数。
[/Quote]
这是十进制小数到二进制小数变换不可避免的情况。

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

一个变通的办法是,不用浮点数,把数值全部变为整数处理。比如所有参数都 × 20 变为整数进行计算。
hoya5121 2008-04-13
  • 打赏
  • 举报
回复
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;
}
独孤过儿 2008-04-13
  • 打赏
  • 举报
回复
代码贴出来...

还有,double怎么会影响你的循环?难道你的循环变量是用double的???
c_spark 2008-04-13
  • 打赏
  • 举报
回复
只是简单的赋值,怎么能多出一个x,不理解...
相关推荐

63,594

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下