函数调用问题,大虾帮帮忙!!!!感激不尽!!!

yejili 2006-05-16 10:16:15
double u0(double t,double r)
{
double fanhui;
if ((t>=(double)(2.0/5.0))&&(t<=(double)(3.0/5.0))&&(r>=(double)(2.0/5.0))&&(r<=(double)(3.0/5.0)))
fanhui=1;
else
fanhui=0;
return fanhui;
}
当t或者r传过来的值是0.6000000时,判断条件t<=(double)(3.0/5.0)和r<=(double)(3.0/5.0)不能成立,不知道是为什么。
哪位高手帮帮忙解释一下!!!
谢了!!
...全文
93 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
anguofeng 2006-05-16
  • 打赏
  • 举报
回复
double不能直接这么比吧
yingge 2006-05-16
  • 打赏
  • 举报
回复
t或者r传过来的值是0.6000000????

是u0(0.6,0.6)这样调用还是u0(0.6,0)这样调用?
lj860603 2006-05-16
  • 打赏
  • 举报
回复
汗,没有问题,怀疑LZ在打印返回值的时候用%d.
tigerzxy 2006-05-16
  • 打赏
  • 举报
回复
double不是精确数值类型。所以即使给两个double型都赋相同的值,也不能保证用==能判断相等。

如果是内嵌sql的程序。建议使用预编译环境提供的decimal类型。

实在要比较,要在精度的范围中去比较。
SamuelKevin 2006-05-16
  • 打赏
  • 举报
回复
double类型的比较
double a;
a>x+精度 && a<-x-精度

69,382

社区成员

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

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