首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

为小弟解决 圆的面积 的疑问

2012-10-13 
请教各位为小弟解决 圆的面积 的疑问请赐教public class Text5 {public static void main(String[] args)

请教各位为小弟解决 圆的面积 的疑问
请赐教
public class Text5 {
public static void main(String[] args) {
  double PI=3.14;//存放π的值
  double R=1.5;//圆的半径
  double area =PI*R*R;//圆的面积
  System.out.println("圆的面积是:"+area);
}

}
输出结果是:
圆的面积是:7.0649999999999995

疑问:我们手算的话结果是:7.065
为什么程序输出的结果是:7.0649999999999995

请赐教

[解决办法]
精度问题
[解决办法]

Java code
    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类。
下面这样:

Java code
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大基本类型的精度问题,这样有助于你的理解

热点排行