为了账号安全,请及时绑定邮箱和手机立即绑定

问课后习题

58ad85240001fa2603820556.jpg

58ad85240001af7a03930536.jpg

58ad852500015c6204100538.jpg

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

正在回答

5 回答

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

1 回复 有任何疑惑可以回复我~
#1

qq_五角心_0 提问者

那我想让结果最多保留2位小数,怎么做呢?
2017-02-23 回复 有任何疑惑可以回复我~
#2

ziom 回复 qq_五角心_0 提问者

用DecimalFormat格式化就行了
2017-02-23 回复 有任何疑惑可以回复我~
#3

qq_五角心_0 提问者

非常感谢!
2017-02-23 回复 有任何疑惑可以回复我~
#4

ziom 回复 qq_五角心_0 提问者

求采纳求采纳!
2017-02-23 回复 有任何疑惑可以回复我~
查看1条回复

保留小数: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

1 回复 有任何疑惑可以回复我~

采用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()//取相反数

 

 

 

 

1 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530655    人
  • 解答问题       6091    个

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

进入课程

问课后习题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信