public class BigDecimalDemo {
public static void main(String[] args) {
//创建2个基本类型的浮点数
double d1 =0.1;
double d2 =0.2;
//计算和
System.out.println(d1+d2);//计算结果0.30000000000000004,不精确,
}
}

使用它的俩个主要原因:
1.解决精度的问题
2.解决小数点以后我们要怎么去处理的问题
构造方法:
public static void main(String[] args) {
//创建2个基本类型的浮点数
double d1 =0.1;
double d2 =0.2;
//计算和
System.out.println("2个double的和");
System.out.println(d1+d2);//计算结果0.30000000000000004,不精确,
System.out.println();
//创建BigDecimal对象
String s1="0.1";
String s2="0.2";
BigDecimal number1=new BigDecimal(s1);
BigDecimal number2=new BigDecimal(s2);
//通过BigDecimal求和
System.out.println(number1.add(number2));//0.3
}

通过静态方法:
- 如果基本类型运用静态
- 当原数使用String表示时,使用构造方法创建BigDecimal对象
- 当原数使用double表示时,使用静态valueOf()方法创建BigDecimal
- 当原数使用double表示时,不要使用double作为构造方法参数来创建BigDecimal对象
public static void main(String[] args) { //创建2个基本类型的浮点数 double d1 =0.1; double d2 =0.2; //计算和 System.out.println("2个double的和"); System.out.println(d1+d2);//计算结果0.30000000000000004,不精确, System.out.println(); //创建BigDecimal对象 String s1="0.1"; String s2="0.2"; BigDecimal number1=new BigDecimal(d1);//BigDecimal.valueOf(d1);0.3//new BigDecimal(s1); BigDecimal number2=new BigDecimal(d2);//BigDecimal.valueOf(d2);0.3//new BigDecimal(s2); /**new BigDecimal(d1)new BigDeccimal(d2)的值 * 为0.3000000000000000166533453693773481063544750213623046875 我们需要调用静态方法 */ //通过BigDecimal求和 System.out.println(number1.add(number2));//0.3 }


BigDecimal的常用Api

int scale:保留小数点之后多少位


public class BigDecimalDemo {
public static void main(String[] args) {
//创建2个基本类型的浮点数
double d1 =0.1;
double d2 =0.2;
//计算和
System.out.println("2个double的和");
System.out.println(d1+d2);//计算结果0.30000000000000004,不精确,
System.out.println();
//创建BigDecimal对象
String s1="0.1";
String s2="0.2";
BigDecimal number1=new BigDecimal(d1);//BigDecimal.valueOf(d1);0.3//new BigDecimal(s1);
BigDecimal number2=new BigDecimal(d2);//BigDecimal.valueOf(d2);0.3//new BigDecimal(s2);
/**new BigDecimal(d1)new BigDeccimal(d2)的值
* 为0.3000000000000000166533453693773481063544750213623046875
我们需要调用静态方法
*/
//通过BigDecimal求和
System.out.println(number1.add(number2));//0.3
number1.divide(number2,2);//不要直接写数值,写常量更好表达
number1.divide(number2,BigDecimal.ROUND_CEILING);//推荐使用
}
将BigDecimal转换为基本类型:

BigDecimal小结:

图文写错了:BigInteger---BigDecimal
处理高精度数据的建议:

764

被折叠的 条评论
为什么被折叠?



