Taylor_XYJ 2014-08-19 03:47 采纳率: 0%
浏览 2327

关于在java里面输出精度的问题

定义抽象类shape,在里面定义final static pi=3.14,和计算周长面积方法,circle类继承shape并实现抽象方法,在测试类里面计算圆的周长和面积时,输出结果精度不准确,该怎么办?

源码如下:
shape.java源码
public abstract class shape {
final static double pi = 3.14;
double mianji;
double zhouchang;
public abstract double C();
public abstract double S();
}
circle.java源码
public class circle extends shape{
double r;
circle(double r){
this.r=r;
}
public double C(){
return 2*r*pi;
}
public double S(){
return r*r*pi;
}
}
testShape.java源码
public class testShape {
public static void main(String[] args) {
circle ci = new circle(5);
System.out.println("圆形的周长是" + ci.C() + ";圆形的面积是" + ci.S());
}
}

半径等于5时的结果:圆形的周长是31.400000000000002;圆形的面积是78.5
半径等于6时的结果:圆形的周长是37.68;圆形的面积是113.04

问题:只是当初始化半径为5时出现精度问题,这是什么原因?应该怎样调整?

  • 写回答

1条回答 默认 最新

  • 快乐的2 2014-08-19 05:18
    关注

    对于精度要求高的计算请使用java的BigDecimal对象计算.

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器