简单问题,呵呵!

bitipierce 2003-06-07 10:38:17
double temp = 1;

while( fabs(temp) > 1.0e-8)

这个比较有没有错?

我就是想确定temp比这个精度(10的负8次方)要大!
...全文
15 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
bitipierce 2003-06-08
  • 打赏
  • 举报
回复
恩!这些建议很有道理,我发现我在这些基本数据类型上欠缺比较大,从前学就很讨厌那些精度,范围什么的!
idontlikenickname 2003-06-08
  • 打赏
  • 举报
回复


哦~
可能的原因是编译器把你写的1.0E-8当成了单精度(float型),
这种类型的最小精度是FLT_EPSILON = 1.192092896e-07F,这时候1.0+FLT_EPSILON !=1.0,
你用了比最小精度还小的数,当然就分不出来了,1.0+1.0E-8 == 1.0,
个人分析,有误请指出~~


qrlvls 2003-06-08
  • 打赏
  • 举报
回复
up
shupianbird 2003-06-08
  • 打赏
  • 举报
回复
在while里每次减多少?是不是过了?试试改为每次除2
locky1982 2003-06-08
  • 打赏
  • 举报
回复
应该可以的
billwolf4 2003-06-07
  • 打赏
  • 举报
回复
(float)temp
bitipierce 2003-06-07
  • 打赏
  • 举报
回复
当然是temp在while里不断减少了!

我把那个1e-8 换成个 0.001 就OK了!

郁闷!
bitipierce 2003-06-07
  • 打赏
  • 举报
回复
当然是temp在while里不断减少了!

我把那个1e-8 换成个 0.001 就OK了!

郁闷!
idontlikenickname 2003-06-07
  • 打赏
  • 举报
回复


条件为真,当然死循环~~~

bitipierce 2003-06-07
  • 打赏
  • 举报
回复
为什么VC编译下好像是个死循环?
pzytony 2003-06-07
  • 打赏
  • 举报
回复

正确,没错误

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧