黑马程序员技术交流社区

标题: 看结果,解疑惑? [打印本页]

作者: 赵崇友    时间: 2013-5-19 08:05
标题: 看结果,解疑惑?
本帖最后由 赵崇友 于 2013-5-19 13:33 编辑

上代码。
结果是:
-2079214094
1.0307921510400124E11
1.020030100000123E10
8.05281735300123E9
求解释:和我预期得到的结果完全不符。。。
  1. import java.math.BigDecimal;

  2. public class Test1 {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 BigDecimal bd = new BigDecimal(101000001010.00123);
  9.                 int intPart = bd.intValue();
  10.                 System.out.println(intPart);
  11.                 System.out.println(bd.doubleValue()-intPart);
  12.                 Double db = 10200301000.00123;
  13.                 System.out.println(db);
  14.                 System.out.println(db-db.intValue());
  15.         }

  16. }
复制代码

作者: 江南雨    时间: 2013-5-19 08:17
import java.math.BigDecimal;



public class Test1 {



        public static void main(String[] args) {

           
                BigDecimal bd = new BigDecimal(101000001010.00123);
               // System.out.println(bd.toString());

                int intPart = bd.intValue();
                System.out.println(intPart);
                System.out.println(bd.doubleValue()-intPart);//将丢弃此 BigDecimal 的所有小数部分,并且如果生成的 "BigInteger" 太大而不适合用 int 表示,则仅返回 32 位低位字节。注意,此转换会丢失关于此 BigDecimal 值的总大小和精度的信息,并返回带有相反符号的结果。

                Double db = 10200301000.00123;

               System.out.println(db);

               System.out.println(db-db.intValue());

        }
}

作者: chensc    时间: 2013-5-19 08:44
学习学习!
作者: 赵崇友    时间: 2013-5-19 08:45
江南雨 发表于 2013-5-19 08:17
import java.math.BigDecimal;

哦哦哦,有点明白,不是太明白!这是不是向下转型,损失精度了,超过范围就取低位字节,带负号标记。




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