告诉你一个真实的秘密:Java太烂了!会被淘汰! 月经贴又来了。用浮点数吧System.out.println((2.0f-1.1f)==0.9f); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 精度跟语言无关。float/double:有限的空间(如64位)表示无限的数据(一个区间小数是无限的)必然存在精度问题。下面就不会错了,注意数字都是字符串。不要传float。BigDecimal d1 = new BigDecimal("2.0") ; BigDecimal d2 = new BigDecimal("1.1") ; BigDecimal d3 = new BigDecimal("0.9") ; d1 = d1.subtract(d2); System.out.println(d1.equals(d3)); 你这个有问题,如果是这样System.out.println((2.0001f-1.1001f) == 0.9f); BigDecimal d1 = new BigDecimal("2.0001") ; BigDecimal d2 = new BigDecimal("1.1001") ; BigDecimal d3 = new BigDecimal("0.9") ; d1 = d1.subtract(d2); System.out.println(d1); System.out.println(d1.compareTo(d3)); // 发现equals也不行。会存在0.90 !=0.9 请编写一个程序,实现从控制台读入字符,接收到’e’或者’E’退出程序。 问下如何在JAVA中实现数据过滤的问题? 求助,关于JAR包问题 映射键值问题(大虾一定要帮忙啊!) [疑问]这种情况是重写方法还是怎么做? 不在电脑属性中在哪还可以设置系统变量????? 如何把一个父类对象转换成一个子类对象,而一开始这个对象就是父类的对象!呵呵,这个问题有点菜! 初学者的线程问题 为什么我的jbuilde里面的代码编辑区的鼠标的滚动条不起作用了呀 JAVA生成。EXE怎么生成? java中一个类的属性何时初始化 socket传输图片的小练习,有点小错误大神帮忙看下。。
float/double:有限的空间(如64位)表示无限的数据(一个区间小数是无限的)必然存在精度问题。下面就不会错了,注意数字都是字符串。不要传float。
BigDecimal d1 = new BigDecimal("2.0") ;
BigDecimal d2 = new BigDecimal("1.1") ;
BigDecimal d3 = new BigDecimal("0.9") ;
d1 = d1.subtract(d2);
System.out.println(d1.equals(d3));
你这个有问题,如果是这样
System.out.println((2.0001f-1.1001f) == 0.9f);
BigDecimal d1 = new BigDecimal("2.0001") ;
BigDecimal d2 = new BigDecimal("1.1001") ;
BigDecimal d3 = new BigDecimal("0.9") ;
d1 = d1.subtract(d2);
System.out.println(d1);
System.out.println(d1.compareTo(d3)); // 发现equals也不行。会存在0.90 !=0.9