A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马王振宇 中级黑马   /  2013-1-4 19:06  /  2234 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 舒远 于 2013-1-4 20:36 编辑

public class abc {
  public static void main(String[] args) {
    System.out.println(5.0-4.2==0.8);
  }
}


竟然打印出来的是false,为什么?如果要他们相等用什么方法??

评分

参与人数 1黑马币 +30 收起 理由
舒远 + 30 问题很有代表性!

查看全部评分

11 个回复

倒序浏览
本帖最后由 坚持远方 于 2013-1-4 20:11 编辑

               hh
回复 使用道具 举报
坚持远方 发表于 2013-1-4 19:21
因为前面的计算结果是int型的,int是没有小数的,所以你把前面强转一下成double就可以了 ...

哥们你喝了吧呵呵?前面结果是int型?!完全不知道你说什么。。
回复 使用道具 举报
你好
5.0-4.0默认是double型的所以计算结果是double型的值0.7999999999999998
所以不等于0.8结果为fasle。
回复 使用道具 举报
这位同学看来你要加强基础知识了啊
我来个图你就知道了啊

QQ截图20130104193226.png (18.66 KB, 下载次数: 61)

QQ截图20130104193226.png
回复 使用道具 举报
我也知道不相等,那实际开发时候怎么避免呢?假如我有个方法经过无数次double类型计算那误差就会很大了,怎么解决呢?
我超市买东西刷卡,Java开发出来的pos机,卡里有5块钱,刷了4块2,我卡里就剩7毛多,是你你干吗?
回复 使用道具 举报
舒远 黑马帝 2013-1-4 19:54:58
7#
你可以使用BigDecimal类处理精确的浮点数运算。有些浮点数无法用double精确的表示。
一般实际开发中对于精度非常高要求的项目。应该使用BigDecimal类。具体的你查查文档应该就会用了。还有疑问的话欢迎跟帖!
回复 使用道具 举报
小律队员 发表于 2013-1-4 19:30
哥们你喝了吧呵呵?前面结果是int型?!完全不知道你说什么。。

不好意思,学的不太好
回复 使用道具 举报
舒远 发表于 2013-1-4 19:54
你可以使用BigDecimal类处理精确的浮点数运算。有些浮点数无法用double精确的表示。
一般实际开发中对于精 ...

import java.math.*;
import java.text.*;
public class abc{
  public static void main(String[] args) {
    double a = 5.0;
    double b = 4.2;
    BigDecimal a1 = new BigDecimal(a);//把double转换成BigDecimal类型
   BigDecimal b1 = new BigDecimal(b);
    DecimalFormat df=new DecimalFormat("0.0"); //设置保存精度
   System.out.println(df.format(a1.subtract(b1)));//结果为0.8
  }
}
我只能说版主你太牛x了,刚才查了api文档,用BigDecimal类,结果弄出来了,非常感谢,问题已解决!
回复 使用道具 举报
舒远 黑马帝 2013-1-4 20:35:36
10#
小律队员 发表于 2013-1-4 20:31
import java.math.*;
import java.text.*;
public class abc{

刚才查文档的过程就是个很好的学习过程。希望继续保持哦。
有时候给你一个思路比直接给你答案会更好。。你说呢:P
回复 使用道具 举报
舒远 发表于 2013-1-4 20:35
刚才查文档的过程就是个很好的学习过程。希望继续保持哦。
有时候给你一个思路比直接给你答案会更好。。 ...

你说的太对了,哥们受教了,我去!你生日竟然只比我大9天!哎哥们儿有缘啊~哈哈哈
回复 使用道具 举报
舒远 黑马帝 2013-1-4 20:42:59
12#
小律队员 发表于 2013-1-4 20:38
你说的太对了,哥们受教了,我去!你生日竟然只比我大9天!哎哥们儿有缘啊~哈哈哈 ...

那你应该叫哥呀 :lol
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马