日期:2014-05-20  浏览次数:20861 次

关于 BigDecimal和double的问题。。。
package test;

import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;
import java.util.Random;

public class Testday1 {
public static void main(String[] ages) throws Exception{
text_1();
// System.out.println(uu);
}

private static void text_1() {
// TODO Auto-generated method stub
BigDecimal b  = new BigDecimal(0.12345678910111213141516);
System.out.println(b);
double d = 0.12345678910111213141516;
System.out.println(d);
}


为什么这段代码执行的结果会是这样的:



一直搞不清楚BigDecimal类有什么用。。。。

------解决方案--------------------
BigDecimal类可以对很大很大的数字计算,

而且也不会有double 这种浮点数 存储和显示的问题
------解决方案--------------------
一般的float型和Double型数据只可 以用来做科学计算或者是工程计算,由于在商业计算中,要求的数字精度比较高,所以要用到。

java.math.BigDecimal类,它支持任何精度的定 点数,可以用它来精确计算货币值。
http://jeelee.iteye.com/blog/652003
------解决方案--------------------
银行这样的计算会用bigdecimal,精确。
其他类型都有界限值,运算一复杂,数字越大,精确度越低,你可以试试。很多简单的运算它也不精确的
BigDecimal好像在128以下会使用int型,它可以自动转换自身类型
------解决方案--------------------
BigDecimal用来精确计算数值,其精度远超过doubel