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来处理