Java API:BigDecimal
Java API:BigDecimal
目录
- Java API:BigDecimal
- 1 BigDecimal
- 2 示例
1 BigDecimal
-
BigDecimal类使用户完全控制舍入行为。 如果未指定舍入模式,并且无法表示确切的结果,则抛出异常; 否则,可以通过向操作提供适当的MathContext对象来进行计算,以选择精度和舍入模式。 在这两种情况下,都提供了八种舍入方式来控制舍入。 使用此类中的整数字段(如ROUND_HALF_UP)表示舍入模式已经过时了; 应该使用RoundingMode枚举(如RoundingMode.HALF_UP)的枚举值。 -
构造方法:
BigDecimal divide = bd1.divide(参与运算的对象,小数点后精确到多少位,舍入模式); -
常用方法
Modifier and Type Field and Description static intROUND_DOWN舍入模式向零舍入。static intROUND_FLOOR舍入模式向负无穷大转弯。static intROUND_HALF_UP四舍五入模式向“最近邻居”转弯,除非两个邻居都是等距的,在这种情况下是圆括弧的。static intROUND_UP舍入模式从零开始。static BigDecimalTEN值为10,标度为0。static BigDecimalZERO值为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
}
}