黑马程序员技术交流社区

标题: 关于浮点类型的运算问题,有些疑问 [打印本页]

作者: doevents    时间: 2013-9-15 12:10
标题: 关于浮点类型的运算问题,有些疑问
本帖最后由 doevents 于 2013-9-15 13:31 编辑

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

作者: Bad_Boy    时间: 2013-9-15 12:38
计算机里无法精确的存储浮点类型的数据
java 2进制数,1.1没有办法精确地表达出来,只能是无限的接近1.1
作者: zhou5852    时间: 2013-9-15 12:42
  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 处理浮点数的机制就知道了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2