日期:2014-05-20 浏览次数:20863 次
public static void main(String[] args) {
final int accuracy = 3;
double x = 7.0649999999999995;
double temp = Math.pow(10, accuracy);
x = Math.round(x * temp) / temp;
System.out.println(x);
}
------解决方案--------------------
double类型的精度
------解决方案--------------------
1楼说的对 是精度问题
你可以把你的 2个参数system.out出来看看 你就知道了
可以用BigDecimal 型的做参数类型
------解决方案--------------------
如楼上所说,double不是精准类型,只能存储“约略”的值,所以运算结果也不会准确。
要计算或存储精确的值,用BigDecimal类。
下面这样:
import java.math.BigDecimal;
public class Test5 {
public static void main(String[] args) {
BigDecimal pi = new BigDecimal("3.14");
BigDecimal r = new BigDecimal("1.5");
BigDecimal area = pi.multiply(r).multiply(r);
System.out.println("圆的面积是:" + area);
}
}
------解决方案--------------------
精度+1
------解决方案--------------------
double 可精确小数点后10位。。你说呢?
------解决方案--------------------
楼主应该看看8大基本类型的精度问题,这样有助于你的理解