BigDecimal基本用法:
import java.math.BigDecimal;
/**
* Created by gailun on 2018/7/12.
*/
public class Demo1 {
public static void main(String[] args) {
BigDecimal bigDecimal = new BigDecimal(54.568);
BigDecimal bigDecimal1 = new BigDecimal(30.151);
BigDecimal bigDecimal2 = new BigDecimal(54.565);
BigDecimal bigDecimal6 = new BigDecimal("3");
// 1.两个BigDecimal相加
// 1.1 相加
BigDecimal add = bigDecimal.add(bigDecimal1);
System.out.println(add);
// 1.2 相加保留两位小数
// 1.2.1 相加保留两位小数, 直接删除多余的小数位, 如84.719会变成84.71
BigDecimal add1 = bigDecimal.add(bigDecimal1).setScale(2, BigDecimal.ROUND_DOWN);
System.out.println(add1);
// 1.2.2 进位处理, 84.719变成84.72
BigDecimal add2 = bigDecimal.add(bigDecimal1).setScale(2,BigDecimal.ROUND_UP);
System.out.println(add2);
// 1.2.3 四舍五入, 84.719变成84.72
BigDecimal add3 = bigDecimal.add(bigDecimal1).setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(add3);
// 1.2.4 四舍五入, 如果是5则向下舍, 54.565变成54.56
BigDecimal add4 = bigDecimal.add(bigDecimal1.setScale(2, BigDecimal.ROUND_HALF_DOWN));
System.out.println(add4);
BigDecimal bigDecimal3 = bigDecimal2.setScale(2, BigDecimal.ROUND_HALF_DOWN);
System.out.println(bigDecimal3);
System.out.println("=========================");
// 2. 两个BigDecimal相减
// 2.1 相减
BigDecimal subtract = bigDecimal.subtract(bigDecimal1);
System.out.println(subtract);
// 2.2 相减保留两位小数
// 2.2.1 相减保留两位小数, 直接删除多余的小数位, 如24.417会变成24.41
BigDecimal subtract1 = bigDecimal.subtract(bigDecimal1).setScale(2, BigDecimal.ROUND_DOWN);
System.out.println(subtract1);
// 2.2.2 进位处理, 24.417变成24.42
BigDecimal subtract2 = bigDecimal.subtract(bigDecimal1).setScale(2, BigDecimal.ROUND_UP);
System.out.println(subtract2);
// 2.2.3 四舍五入, 24.417变成24.42
BigDecimal subtract3 = bigDecimal.subtract(bigDecimal1).setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(subtract3);
System.out.println("====================");
// 3. 两个BigDecimal相乘
// 3.1 相乘
BigDecimal multiply = bigDecimal.multiply(bigDecimal1);
System.out.println(multiply);
// 3.2 相乘保留两位小数
// 3.2.1 相乘保留两位小数, 直接删除多余的小数位, 如1645.279会变成1645.27
BigDecimal multiply1 = bigDecimal.multiply(bigDecimal1).setScale(2, BigDecimal.ROUND_DOWN);
System.out.println(multiply1);
// 3.2.2 进位处理, 1645.279会变成1645.27
BigDecimal multiply2 = bigDecimal.multiply(bigDecimal1).setScale(2, BigDecimal.ROUND_UP);
System.out.println(multiply2);
// 3.2.3 四舍五入, 1645.279会变成1645.27
BigDecimal multiply3 = bigDecimal.multiply(bigDecimal1).setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(multiply3);
System.out.println("==============");
// 4 两个BigDecimal相除
// 4.1 相除, 保留两位小数, 18.189会变为18.19
BigDecimal divide = bigDecimal.divide(bigDecimal6,2,BigDecimal.ROUND_HALF_UP);
System.out.println(divide);
// 4.2 相除, 保留三位小数 18.189
BigDecimal divide1 = bigDecimal.divide(bigDecimal6,3,BigDecimal.ROUND_HALF_UP);
System.out.println(divide1);
// 4.2 相除,保留两位小数,18.189会变为18.18
BigDecimal divide2 = bigDecimal.divide(bigDecimal6, 2, BigDecimal.ROUND_DOWN);
System.out.println(divide2);
}
}
执行结果:
(1) 问题
String string = null;
BigDecimal b1 = new BigDecimal(string);
BigDecimal b2 = new BigDecimal("9");
BigDecimal a = b1.add(b2);
System.out.println(a);
执行时报以下异常:
DecimalFormat 数字格式化
Integer i = 1;
DecimalFormat decimalFormat = new DecimalFormat("000");
String format = decimalFormat.format(i);
System.out.println(format);
执行结果: