BigDecimal
文章参考自https://blog.csdn.net/GD_ONE/article/details/103951501和百度百科
精度问题
BigDecimal舍入模式
ROUND_DOWN 向零舍入。 即1.55 变为 1.5 , -1.55 变为-1.5
ROUND_UP 向远离0的方向舍入 即 1.55 变为 1.6 , -1.55 变为-1.6
ROUND_CEILING 向正无穷舍入. 即 1.55 变为 1.6 , -1.55 变为 -1.5
ROUND_FLOOR 向负无穷舍入. 即 1.55 变为 1.5 , -1.55 变为 -1.6
ROUND_HALF_UP 四舍五入 即1.55 变为1.6, -1.55变为-1.6
ROUND_HALF_DOWN 五舍六入 即 1.55 变为 1.5, -1.5变为-1.5
ROUND_HALF_EVEN 如果舍入前一位的数字为偶数,则采用HALF_DOWN奇数则采用HALF_UP 如1.55 采用HALF_UP 1.45采用HALF_DOWN
ROUND_UNNECESSARY 有精确的位数时,不需要舍入
BigDecimal在进行运算时也可以进行舍入
例如除法divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
返回一个BigDecimal,其值为 (this / divisor) ,其小数位数为scale。
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
BigDecimal d1 = new BigDecimal("3.1415926535");
BigDecimal d2 = new BigDecimal("2.7182818284");
BigDecimal d3 = d1.divide(d2, 10, BigDecimal.ROUND_UP);
System.out.println(3.1415926535 / 2.7182818284);
System.out.println(d3);
}
}
输出
1.155727349782993
1.1557273498