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

来源:3-2 Java中的算术运算符

慕瓜7049329

2019-12-30 14:45

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

写回答 关注

5回答

  • 慕慕745502
    2020-02-04 16:24:49
    已采纳

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

  • 欧尼桑1111
    2020-01-04 11:12:56
    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类型的。

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

  • 慕慕4249757
    2020-01-02 20:10:33

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

  • 慕瓜7049329
    2020-01-02 11:43:52

    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);


    }

    }


    慕妹3137...

    将你代码中的float直接改成double类型就可以了

    2020-01-27 17:23:00

    共 1 条回复 >

  • 慕慕4249757
    2019-12-30 19:48:04

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

    慕瓜7049...

    代码发在下面了,大佬帮忙看一下吧谢谢

    2020-01-02 11:44:30

    共 1 条回复 >

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1166886 学习 · 17593 问题

查看课程

相似问题