一提到Java里面的商业计算,我们都知道不能用
float
和
double
,因为他们无法 进行精确计算。但是Java的设计者给编程人员提供了一个很有用的类BigDecimal,他可以完善
float
和
double
类无法进行精确计算的缺 憾。BigDecimal类位于java.maths类包下。首先我们来看下如何构造一个BigDecimal对象。它的构造函数很多,我挑最常用的两个 来演示一下:一个就是BigDecimal(
double
val),另一个就是BigDecimal(String str)。
下面是两个浮点数相减的例子来说明:
public
static
void
main(String[] args) {
double
a =
1
;
double
b =
0.9
;
BigDecimal a1 =
new
BigDecimal(Double.toString(a));
BigDecimal b1 =
new
BigDecimal(Double.toString(b));
BigDecimal a2 =
new
BigDecimal(a);
BigDecimal b2 =
new
BigDecimal(b);
double
c = a1.subtract(b1).doubleValue();
double
d = a2.subtract(b2).doubleValue();
System.out.println(“c=”+c);
System.out.println(“d=”+d);
}
结果为:
c=
0.1
d=
0.09999999999999998
可以得出结论:
利用
double
作为参数的构造函数,无法精确构造一个BigDecimal对象,需要自己指定一个上下文的环境,也就是指定精确位。而利用String对象作为参数传入的构造函数能精确的构造出一个BigDecimal对象。
|
Double保留两位小数方法
1
2
3
4
5
|
//保留2位小数
public
static
double
get2Double(
double
a){
DecimalFormat df=
new
DecimalFormat(
"0.00"
);
return
new
Double(df.format(a).toString());
}
|