问课后习题

来源:10-3 Java 中的抽象类

qq_五角心_0

2017-02-22 20:35

58ad85240001fa2603820556.jpg

58ad85240001af7a03930536.jpg

58ad852500015c6204100538.jpg

请问为什么p用3.14的时候,周长不是31.4??(用3.13等的时候也一样)

写回答 关注

5回答

  • ziom
    2017-02-23 06:31:25
    已采纳

    精度问题,可以用BigDecimal计算,就不会有这种情况了

    ziom 回复qq_五角心...

    求采纳求采纳!

    2017-02-23 09:47:34

    共 4 条回复 >

  • 陈晨辰_
    2017-04-01 09:31:47

    保留小数:java DecimalFormat format 方法的使用
      1:new DecimalFormat("00.000").format(pi) //结果:03.142

        比实际数字的位数多,不足的地方用0补上。
        new DecimalFormat("00.00").format(3.14)  //结果:03.14
        new DecimalFormat("0.000").format(3.14)  //结果: 3.140
        比实际数字的位数少:整数部分不改动,小数部分,四舍五入
        new DecimalFormat("0.000").format(13.146)  //结果:13.146
        new DecimalFormat("00.00").format(13.146)  //结果:13.15

        2:new DecimalFormat("##.###").format(pi) //结果:3.142

        比实际数字的位数多,不变。
        new DecimalFormat("##.###").format(3.14)  //结果:3.14
        比实际数字的位数少:整数部分不改动,小数部分,四舍五入
        new DecimalFormat("#.##").format(13.146)  //结果:13.15

  • 陈晨辰_
    2017-04-01 09:24:58

    采用java.math.BigDecimal类来进行精确计算。

              在使用BigDecimal类来进行计算的时候,主要分为以下步骤:

                  1、用float或者double变量构建BigDecimal对象。

                 2、通过调用BigDecimal的加,减,乘,除等相应的方法进行算术运算。

                 3、把BigDecimal对象转换成float,double,int等类型。

              一般来说,可以使用BigDecimal的构造方法或者静态方法的 valueOf()方法把基本类型的变量构建成BigDecimal对象。

     1 BigDecimal b1 = new BigDecimal(Double.toString(0.48));
     2 BigDecimal b2 = BigDecimal.valueOf(0.48);        对于常用的加,减,乘,除,BigDecimal类提供了相应的成员方法。

    1 public BigDecimal add(BigDecimal value); 
     public static double add(double value1,double value2){
              BigDecimal b1 = new BigDecimal(Double.valueOf(value1));
             BigDecimal b2 = new BigDecimal(Double.valueOf(value2));
             return b1.add(b2).doubleValue();}
    //加法
    2 public BigDecimal subtract(BigDecimal value);                   //减法
    3 public BigDecimal multiply(BigDecimal value);                   //乘法
    4 public BigDecimal divide(BigDecimal value);                     //除法

     

    测试参数类型为double和String的两个常用构造函数
           BigDecimal aDouble =new BigDecimal(1.22);
            System.out.println("construct with a double value: " + aDouble);

            BigDecimal aString = new BigDecimal("1.22");
             System.out.println("construct with a String value: " + aString);
    输出结果如下:
             construct with a double value: 1.219999
             construct with a String value: 1.22
    String 构造方法是完全可预知的,通常建议优先使用String构造方法

    BigDecimal都是不可变的(immutable)的,在进行每一步运算时,都会产生一个新的对象,所以在做加减乘除运算时千万要保存操作后的值。


    java BigDecimal比较大小
    比较大小可以用 a.compareTo(b)
    返回值    -1 小于   0 等于    1 大于

    BigDecimal取其中最大、最小值、绝对值、相反数:
      a.max (b) //比较取最大值
      a.min(b) //比较取最小值
      a.abs()//取最绝对值
      a.negate()//取相反数

     

     

     

     

  • 沈小黑orz
    2017-02-22 21:27:42

    精度问题吧,我记得可以有个叫PI的方法

  • qq_乖宝宝不哭i_0
    2017-02-22 21:09:48

    是精度问题,有点记不清了,希望有帮助

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530655 学习 · 6091 问题

查看课程

相似问题