You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java代码基础分数百分比计算错误:实际输出76而非预期76.6

问题原因

问题出在整数除法上:代码中agg_marks是int类型,100和500也都是整数,所以agg_marks*100/500会先执行整数运算,直接舍弃小数部分。你的总分为383,383*100=38300,38300/500=76(整数除法只保留商的整数部分),之后再把这个整数结果赋值给double类型的perc,自然就得到76.0而非76.6。

解决方法

只要让运算过程中触发浮点运算即可,有两种常用方式:

方式一:将其中一个整数常量改为浮点数

把100改成100.0或者500改成500.0,这样Java会自动将整个表达式提升为浮点运算:

/**
 * practice
 */
public class practice {

    public static void main(String[] args) {
        int sc,sst,maths,eng,sans,agg_marks;
        double perc;
        sc = 60;
        sst = 49;
        maths = 79;
        eng = 99;
        sans = 96;
        agg_marks = sc+sst+maths+eng+sans;
        perc = agg_marks * 100.0 / 500; // 修改这里,用100.0替代100
        System.out.println(agg_marks);
        System.out.println(perc);
    }
}

方式二:强制转换agg_marks为double类型

先把int类型的总分转换成double,后续运算就会以浮点类型进行:

/**
 * practice
 */
public class practice {

    public static void main(String[] args) {
        int sc,sst,maths,eng,sans,agg_marks;
        double perc;
        sc = 60;
        sst = 49;
        maths = 79;
        eng = 99;
        sans = 96;
        agg_marks = sc+sst+maths+eng+sans;
        perc = (double)agg_marks * 100 / 500; // 强制转换agg_marks为double
        System.out.println(agg_marks);
        System.out.println(perc);
    }
}

两种方式都能得到正确的76.6结果,你可以根据习惯选择其中一种。

内容的提问来源于stack exchange,提问作者Shreyash_Sachit_Sahu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 23:45:12