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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© doevents 中级黑马   /  2013-9-15 12:10  /  1022 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 doevents 于 2013-9-15 13:31 编辑

在无意间写代码的时候,运行结果和我想的不一样,System.out.println(2.0-1.1);结果不是0.9,确是0.8999999999999999,我尝试用浮点运算,结果都是不对的,但是我左思右想,觉得语法上没有错误,但是运行结果就是不对,也查过百度,但说的不是很懂,希望有通俗易懂的解释,谢谢{:soso_e101:}

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

2 个回复

倒序浏览
计算机里无法精确的存储浮点类型的数据
java 2进制数,1.1没有办法精确地表达出来,只能是无限的接近1.1

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
  1. package org.opensicience.zhou4chem.FormatterDemo;

  2. import java.math.BigDecimal;

  3. public  class TestDouble {


  4.         public static  void main(String[] args) {
  5.                 // TODO Auto-generated method stub
  6.                 System.out.println(2.0-1.1);
  7.          BigDecimal a = new BigDecimal("2.0");
  8.          BigDecimal b = new BigDecimal("1.1");
  9.          System.out.println(a.subtract(b));
  10.         }

  11. }
复制代码
如果你是基础者 这个问题先放下,这个是由浮点数存储机制引起的,一般对于这样的计算,都采用BigDecimal类的对象来处理,就像我这样的,你可以查下java 处理浮点数的机制就知道了

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马