BigDecimal自学笔记
在金融项目中,需要对金额精确度高
?
package hb.bigdecimal;import java.math.BigDecimal;public class BigDecimalDemo {public static void main(String[]args){double v1 = 3.55;double v2 = 7.4;//BigDecimal result = add(v1, v2);//BigDecimal result = sub(v1, v2);//BigDecimal result = mul(v1, v2);BigDecimal result = div(v1, v2);System.out.println(result);BigDecimal a = new BigDecimal(998.01); BigDecimal b=new BigDecimal("100"); System.out.println(a.multiply(b)); BigDecimal aa = new BigDecimal(135.95); BigDecimal bb=new BigDecimal("100"); System.out.println(aa.multiply(bb)); BigDecimal test = new BigDecimal(4.015); BigDecimal test1 = new BigDecimal(100); System.out.println(test.multiply(test1));BigDecimal aa1 = new BigDecimal(135.95); BigDecimal bb1=new BigDecimal("100"); BigDecimal result1=aa1.multiply(bb1); //将这个BigDecimal小数点后保留2位,四舍五入的方式为向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入System.out.println(result1.setScale(2,BigDecimal.ROUND_HALF_EVEN));}/** * 用第一个数除以第二个数 * 提供精确的除法运算 当除不尽时,精确到小数点后10位,以后的数字四舍五入 * @param v1 * @param v2 * @return */public static BigDecimal div(double v1,double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));//13表示小数点后面精确到多少位return b1.divide(b2, 13, BigDecimal.ROUND_HALF_UP);}/** * 连个数相乘 * @param v1 * @param v2 * @return */public static BigDecimal mul(double v1,double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.multiply(b2);}/** * 计算第一个数减去第二个数 * @param v1 * @param v2 * @return */public static BigDecimal sub(double v1,double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.subtract(b2);}/** * 计算两个数相加 * @param v1 * @param v2 * @return */public static BigDecimal add(double v1,double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.add(b2);}}
?
?
?