Java API:BigDecimal
目录1 BigDecimal
-
BigDecimal
类使用户完全控制舍入行为。 如果未指定舍入模式,并且无法表示确切的结果,则抛出异常; 否则,可以通过向操作提供适当的MathContext
对象来进行计算,以选择精度和舍入模式。 在这两种情况下,都提供了八种舍入方式来控制舍入。 使用此类中的整数字段(如ROUND_HALF_UP
)表示舍入模式已经过时了; 应该使用RoundingMode
枚举
(如RoundingMode.HALF_UP
)的枚举值。 -
构造方法:
BigDecimal divide = bd1.divide(参与运算的对象,小数点后精确到多少位,舍入模式);
-
常用方法
Modifier and Type Field and Description static int
ROUND_DOWN
舍入模式向零舍入。static int
ROUND_FLOOR
舍入模式向负无穷大转弯。static int
ROUND_HALF_UP
四舍五入模式向“最近邻居”转弯,除非两个邻居都是等距的,在这种情况下是圆括弧的。static int
ROUND_UP
舍入模式从零开始。static BigDecimal
TEN
值为10,标度为0。static BigDecimal
ZERO
值为0,标度为0。
2 示例
package com.fcarey.api;
import java.math.BigDecimal;
public class MyBigDecimal {
public static void main(String[] args) {
BigDecimal a = new BigDecimal(2.46);
BigDecimal b = new BigDecimal(1.23);
System.out.println(a.add(b)); // 输出:3.68999999999999994...
System.out.println(a.subtract(b)); // 输出:1.22999999999999998223643160...
System.out.println(a.multiply(b)); // 输出:3.0257999999999999126032435015076777...
System.out.println(a.divide(b)); // 输出:2
// 如果要精确运算需要使用字符串的构造
BigDecimal c = new BigDecimal("2.46");
BigDecimal d = new BigDecimal("1.23");
System.out.println(c.add(d)); // 输出:3.69
System.out.println(c.subtract(d)); // 输出:1.23
System.out.println(c.multiply(d)); // 输出:3.0258
System.out.println(c.divide(d)); // 输出:2
BigDecimal e = new BigDecimal("10.0");
BigDecimal f = new BigDecimal("3.0");
System.out.println(e.divide(f,2,BigDecimal.ROUND_UP));; // 输出:3.34
System.out.println(e.divide(f,2,BigDecimal.ROUND_FLOOR));; // 输出:3.33
System.out.println(e.divide(f,2,BigDecimal.ROUND_HALF_UP));; // 输出:3.33
}
}
标签:舍入,Java,BigDecimal,System,API,println,ROUND,out
From: https://www.cnblogs.com/f-carey/p/18386931