黑马程序员技术交流社区
标题:
看结果,解疑惑?
[打印本页]
作者:
赵崇友
时间:
2013-5-19 08:05
标题:
看结果,解疑惑?
本帖最后由 赵崇友 于 2013-5-19 13:33 编辑
上代码。
结果是:
-2079214094
1.0307921510400124E11
1.020030100000123E10
8.05281735300123E9
求解释:和我预期得到的结果完全不符。。。
import java.math.BigDecimal;
public class Test1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BigDecimal bd = new BigDecimal(101000001010.00123);
int intPart = bd.intValue();
System.out.println(intPart);
System.out.println(bd.doubleValue()-intPart);
Double db = 10200301000.00123;
System.out.println(db);
System.out.println(db-db.intValue());
}
}
复制代码
作者:
江南雨
时间:
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