BigDecimal、double
BigDecimal篇:
1.String转BigDecimal
String s1="123.45"; BigDecimal bg=new BigDecimal(s1);
2. 解决double相加的精度问题,要用BigDecimal
public static double add(double v1, double v2) { BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.add(b2).doubleValue(); }
Double a=BigDecimalUtils.format(b).doubleValue();
3.加减乘除
bignum3 = bignum1.add(bignum2); bignum3 = bignum1.subtract(bignum2); bignum3 = bignum1.multiply(bignum2); bignum3 = bignum1.divide(bignum2);
4.比大小
//前提为a、b均不能为null if(a.compareTo(b) == -1){ System.out.println("a小于b"); } if(a.compareTo(b) == 0){ System.out.println("a等于b"); } if(a.compareTo(b) == 1){ System.out.println("a大于b"); } if(a.compareTo(b) > -1){ System.out.println("a大于等于b"); } if(a.compareTo(b) < 1){ System.out.println("a小于等于b"); }
5.等于0
if(num.equals(BigDecimal.ZERO)){ }
6.转换成类型
toString() 将BigDecimal对象的数值转换成字符串。
doubleValue() 将BigDecimal对象中的值以双精度数返回。
floatValue() 将BigDecimal对象中的值以单精度数返回。
longValue() 将BigDecimal对象中的值以长整数返回。
intValue() 将BigDecimal对象中的值以整数返回。
6.保留两位小数处理
//第一种方法:保留两位小数 double db = bigDecimalTwo.setScale(2, RoundingMode.HALF_UP).doubleValue(); System.out.println(db); // 第二种方法:保留两位小数 DecimalFormat df = new DecimalFormat("#.00"); df.format(bigDecimalTwo);
----------------------------------------分割线---------------------------------------------------------------------------
double篇:
double的比大小,判是否等于0都会有精度问题
要用BigDecimal来处理