packagearchie2010;
import
java.math.BigDecimal;
import
java.math.MathContext;
public
class
BigDecimalTest {
public
static
void
main(String[] args) {
// TODO Auto-generated method stub
double
d1,d2;
d1 = 0.10334
;
d2 = 1234.0
;
System.out.println("直接输出double类型的值:"
);
printDouble(d1, d2);
System.out.println("将double类型直接转换为BigDecimal类型,再输出:"
);
printDoubleToBigDecimal(d1, d2);
System.out.println("将double类型转换为String类型,再转换为BigDecimal类型,再输出:"
);
printDoubleToStrToBigDecimal(d1, d2);
System.out.println("使用静态方法valueOf将double转换为BigDecimal类型并输出:"
);
printDoubleToBigDecimalWithValueof(d1,d2);
System.out.println("直接将double类型值转换为确定精度为3的BigDecimal类型值:"
);
printDoubleToBigDecimalWithPrecision(d1, d2, 3
);
System.out.println("将double类型值转换为String类型再转换为确定精度(3)的BigDecimal类型值:"
);
printDoubleToBigDecimalWithPrecisionAsStr(d1,d2,3
);
}
public
static
void
printDouble(
double
v1,
double
v2){
System.out.println("d1="
+v1);
System.out.println("d2="
+v2);
}
public
static
void
printDoubleToBigDecimal(
double
v1,
double
v2){
BigDecimal d1TobigDe = new
BigDecimal(v1);
BigDecimal d2TobigDe = new
BigDecimal(v2);
System.out.println("d1TobigDe="
+d1TobigDe);
System.out.println("d2TobigDe="
+d2TobigDe);
}
public
static
void
printDoubleToStrToBigDecimal(
double
v1,
double
v2){
BigDecimal d1ToStrToBigDe = new
BigDecimal(String.valueOf(v1));
BigDecimal d2ToStrToBigDe = new
BigDecimal(String.valueOf(v2));
System.out.println("d1ToStrToBigDe="
+d1ToStrToBigDe);
System.out.println("d2ToStrToBigDe="
+d2ToStrToBigDe);
}
public
static
void
printDoubleToBigDecimalWithValueof(
double
v1,
double
v2){
System.out.println("BigDecimal.valueOf(d1)="
+BigDecimal.valueOf(v1));
System.out.println("BigDecimal.valueOf(d2)="
+BigDecimal.valueOf(v2));
}
public
static
void
printDoubleToBigDecimalWithPrecision(
double
v1,
double
v2,
int
setPrecision){
BigDecimal d1ToBigDeWithPre = new
BigDecimal(v1,
new
MathContext(setPrecision));
BigDecimal d2ToBigDeWithPre = new
BigDecimal(v2,
new
MathContext(setPrecision));
System.out.println("d1ToBigDeWithPre="
+d1ToBigDeWithPre);
System.out.println("d2ToBigDeWithPre="
+d2ToBigDeWithPre);
}
public
static
void
printDoubleToBigDecimalWithPrecisionAsStr(
double
v1,
double
v2,
int
setPrecision){
BigDecimal d1ToStrToBigDeWithPre = new
BigDecimal(String.valueOf(v1),
new
MathContext(setPrecision));
BigDecimal d2ToStrToBigDeWithPre = new
BigDecimal(String.valueOf(v2),
new
MathContext(setPrecision));
System.out.println("d1ToStrToBigDeWithPre="
+d1ToStrToBigDeWithPre);
System.out.println("d2ToStrToBigDeWithPre="
+d2ToStrToBigDeWithPre);
}
}
---------------------------------------
运行结果:
直接输出double类型的值:d1=0.10334d2=1234.0将double类型直接转换为BigDecimal类型,再输出:d1TobigDe=0.10334000000000000130118138486068346537649631500244140625d2TobigDe=1234将double类型转换为String类型,再转换为BigDecimal类型,再输出:d1ToStrToBigDe=0.10334d2ToStrToBigDe=1234.0使用静态方法valueOf将double转换为BigDecimal类型并输出:BigDecimal.valueOf(d1)=0.10334BigDecimal.valueOf(d2)=1234.0直接将double类型值转换为确定精度为3的BigDecimal类型值:d1ToBigDeWithPre=0.103d2ToBigDeWithPre=1.23E+3将double类型值转换为String类型再转换为确定精度(3)的BigDecimal类型值:d1ToStrToBigDeWithPre=0.103d2ToStrToBigDeWithPre=1.23E+3
参考文献:http://www.cnblogs.com/archie2010/archive/2011/04/01/2002415.html