在使用数值计算的时候,应该小心,看看下边这段代码的结果。当使用float和double是要谨慎
import
java.math.BigDecimal;


public
class
TestNum
{

public
static
void
main(String[] args)
{
double
s
=
0
;
for
(
int
i
=
0
; i
<
26
; i
++
)
s
+=
0.1
;
System.out.println(s);

double
d
=
29.0
*
0.01
;
System.out.println(d);
System.out.println((
int
) (d
*
100
));
BigDecimal num
=
new
BigDecimal(
0.01
);
double
dnum
=
num.doubleValue();
System.out.println(dnum);
}
}
import
java.math.BigDecimal; 

public
class
TestNum
{
public
static
void
main(String[] args)
{
double
s
=
0
;
for
(
int
i
=
0
; i
<
26
; i
++
)
s
+=
0.1
;
System.out.println(s); 
double
d
=
29.0
*
0.01
;
System.out.println(d);
System.out.println((
int
) (d
*
100
));
BigDecimal num
=
new
BigDecimal(
0.01
);
double
dnum
=
num.doubleValue();
System.out.println(dnum);
}
}
本文通过一个Java示例展示了使用float和double类型进行数值计算时可能遇到的问题。代码演示了累加0.1到double变量及double类型精度损失的现象,并对比了使用BigDecimal类处理小数运算的准确性。
346

被折叠的 条评论
为什么被折叠?



