/**
* java.math.MathContext
* 该对象是封装上下文设置的不可变对象,它描述数字运算符的某些规则
* 基本独立设置为:
* precision:某个操作使用的数字个数;结果舍入到此精度
* roundingMode:一个 RoundingMode 对象,该对象指定舍入使用的算法。
*/
public static void MathContextTest(){
}
/**
* java.math.BigDecimal* 不可变的、任意精度的有符号十进制数
* 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成
* 提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换
*/
public static void BigDecimalTest(){
System.out.println(BigDecimal.class);
System.out.println(BigDecimal.ROUND_CEILING);
System.out.println(BigDecimal.ROUND_FLOOR);
System.out.println(BigDecimal.ROUND_DOWN);
System.out.println(BigDecimal.ROUND_UP);
System.out.println(BigDecimal.ROUND_HALF_DOWN);
System.out.println(BigDecimal.ROUND_HALF_EVEN);
System.out.println(BigDecimal.ROUND_HALF_UP);
//初始化
System.out.println(new BigDecimal(-123456.8));
//需要精确计算,非要用String来够造BigDecimal不可
System.out.println(new BigDecimal("-123456.6"));
System.out.println(new BigDecimal(new char[]{'2','4'}));
System.out.println(new BigDecimal(new char[]{'2','4','3','9'},1,2));
//int 标度
System.out.println(new BigDecimal(new BigInteger("-123456"), 5));
//根据上下文设置进行舍入
System.out.println(new BigDecimal(new BigInteger("-123456"), 5, new MathContext(3, RoundingMode.UP)));
System.out.println(new BigDecimal(123456.8, new MathContext(3, RoundingMode.HALF_DOWN)));
System.out.println(new BigDecimal(123456, new MathContext(3, RoundingMode.CEILING)));
System.out.println(new BigDecimal("123456", new MathContext(3, RoundingMode.DOWN)));
System.out.println(new BigDecimal(123456.8, new MathContext(3, RoundingMode.FLOOR)));
System.out.println(new BigDecimal(123456.8, new MathContext(3, RoundingMode.HALF_EVEN)));
System.out.println(new BigDecimal(123456.8, new MathContext(3, RoundingMode.HALF_UP)));
System.out.println(new BigDecimal(123456.8, new MathContext(3, RoundingMode.UP)));
System.out.println(new BigDecimal(123456.8, new MathContext(3, RoundingMode.UP)).toPlainString());
System.out.println(new BigDecimal(123456.8, new MathContext(3, RoundingMode.UP)).toEngineeringString());
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(new BigDecimal(123456.856)));
}
******************************************************************************************\
class java.math.BigDecimal
2
3
1
0
5
6
4
-123456
-123456.800000000002910383045673370361328125
-123456.6
24
43
-1.23456
-1.24
1.23E+5
1.24E+5
1.23E+5
1.23E+5
1.23E+5
1.23E+5
1.24E+5
124000
124E+3
123456.86