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

为什么平均的结果是26.0,不是26.25

平均数计算不是在age1自减之前的吗?

正在回答

5 回答

因为之前定义的sum是一个整数类型,在运算时应该是先进行sum/4得到一个整数后面才赋值给double型的avg

0 回复 有任何疑惑可以回复我~
public static void main(String[] args) {

    int age1=24;

    int age2=18;

    int age3=36;

    int age4=27;

    int sum=age1+age2+age3+age4;

    BigDecimal sum1 = new BigDecimal(sum);

    BigDecimal four = new BigDecimal("4");

    BigDecimal avg = sum1.divide(four);

    int minus=age1-age2;

    int newAge=--age1;

    System.out.println("年龄总和:"+sum);

    System.out.println("平均年龄:"+avg);

    System.out.println("年龄差值:"+minus);

    System.out.println("自减后的年龄:"+newAge);

这个数据类型的精度问题,还需要自身多去看看基础知识。这里我使用BigDecimal。这个可以传很多类型的参数进去转成BigDecimal,推荐使用String类型的。

以后你做什么高精度的业务逻辑也要使用这个进行计算。

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

除4改成4.0f 其实用double就行

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

public class HelloWorld{

    public static void main(String[] args) {

int age1=24;

int age2=18;

int age3=36;

int age4=27;

int sum=age1+age2+age3+age4;

float avg=sum/4;

int minus=age1-age2;

int newAge=--age1;

    System.out.println("年龄总和:"+sum);

    System.out.println("平均年龄:"+avg);

System.out.println("年龄差值:"+minus);

System.out.println("自减后的年龄:"+newAge);


}

}


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

慕妹3137541

将你代码中的float直接改成double类型就可以了
2020-01-27 回复 有任何疑惑可以回复我~

代码都没有怎么给你解决问题呢

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

慕瓜7049329 提问者

代码发在下面了,大佬帮忙看一下吧谢谢
2020-01-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么平均的结果是26.0,不是26.25

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