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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© IDhmpj 中级黑马   /  2015-5-4 22:03  /  362 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class FloatTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 System.out.println(2.00-1.10);
  6.         }
  7. }
复制代码


这段代码的结果不是0.9,而是0.8999999999999999。
原因就是double精度带来的问题,1.1相当于1.0000000000000009。就造成了上面的问题。
在遇到需要对浮点数进行运算的时候,应该使用BigDecimal。
  1. import java.math.BigDecimal ;
  2. class FloatTest
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 System.out.println(new BigDecimal("2.00").subtract(new BigDecimal("1.10")));
  7.         }
  8. }
复制代码

这样得到的结果就是:0.90

注意:在构建BigDecimal 对象的时候要使用参数为字符串的构造器。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马