double 精度问题

stephenr 2002-04-18 10:26:14
问题:

double a=1924676.23;
double b=1924676.22;

System.err.println("a-b="+(a-b));

显示结果为0.0000001932;
现在我需要判断
if((a-b)==0)

请教有没有什么好的方法解决?谢谢。
...全文
50 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
FALSE 2002-04-19
  • 打赏
  • 举报
回复
向上面的这种要求, 可以自己处理小数点,然后通过int或者long这些基本类型来处理。 复杂一些的可用BigDecimal.
  • 打赏
  • 举报
回复
我同意楼上的方案

xhh 2002-04-18
  • 打赏
  • 举报
回复
我同意楼上的方案
jimjxr 2002-04-18
  • 打赏
  • 举报
回复
compareTo跟用==比较在精度上是一样的,所以没用。要判断(a-b)==0只能取一个范围,如Math.abs(a-b)<=0.00001。如果要求完全精确的话可以用BigDecimal类。
drinkant 2002-04-18
  • 打赏
  • 举报
回复
随便那种语言, 都不可能为0的,
解决的办法是当两者相差小于某个值,如0.000001时就认为他们相等
FALSE 2002-04-18
  • 打赏
  • 举报
回复
尽量不要用double和float

使用BigDecimal来处理
aprim 2002-04-18
  • 打赏
  • 举报
回复
Double A = new Double(a);
Double B = new Double(b);
if(A.compareTo(B)==0) {
System.out.print("equal");
}
gflei 2002-04-18
  • 打赏
  • 举报
回复
如果你的要求不高,上面那个方法可行
illia 2002-04-18
  • 打赏
  • 举报
回复
没有什么特别好的
可以把double转化成String
然后用equals方法来比较

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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