1、bigdecimal在做加、减、乘时,精度不会丢失,但是做除法时,存在无法除尽的情况,这时就必须指定精度以及如何进行截断。
import java.math.bigdecimal; import java.math.roundingmode; public class demo { public static void main(string[] args) { bigdecimal d1 = new bigdecimal(123.456); bigdecimal d2 = new bigdecimal(23.456789); bigdecimal d3 = d1.divide(d2, 10, roundingmode.half_up); // 保留10位小数并四舍五入 bigdecimal d4 = d1.divide(d2); // 报错:arithmeticexception,因为除不尽 } }
2、可以对bigdecimal做除法的同时求其余数。
import java.math.bigdecimal; public class demo { public static void main(string[] args) { bigdecimal n = new bigdecimal(22.444); bigdecimal m = new bigdecimal(0.23); bigdecimal[] dr = n.divideandremainder(m); system.out.println(dr[0]); // 97.0 system.out.println(dr[1]); // 0.134 } }
以上就是java中怎么用bigdecimal做数学运算的详细内容。