Java 简单数学未按预期显示?

Java 简单数学未按预期显示?,java,math,Java,Math,为什么整数不等于总分=马克/总分*100;工作当我输入25和50时,在计算25/50*100后,应该是50%。但它却显示为0%,这很奇怪。有什么建议吗 public class MarksCalculator { private static Scanner kb = new Scanner(System.in); public static void main (String[]args) { int mark = 0, ov

为什么整数不等于总分=马克/总分*100;工作当我输入25和50时,在计算25/50*100后,应该是50%。但它却显示为0%,这很奇怪。有什么建议吗

    public class MarksCalculator {
        private static Scanner kb = new Scanner(System.in);

        public static void main (String[]args) {

            int mark = 0, overall = 0;

            //System.out.print("Hello Deepo!  To calculate the marks enter value (percantage) of the task: ");
            //int weight = kb.nextInt();

            System.out.print("Enter your marks for this Task/Assesment/Test: ");
            mark = kb.nextInt();

            System.out.print("What was this mark out of: ");
            overall = kb.nextInt();

            int total = (mark/overall) * 100;

            System.out.println("You have scored " + total + "% with this assesment.");
}
}

你需要投双:

double total = ((double)mark/overall) * 100;
发件人:

如果升级类型为int或long,则使用整数算术 表演


如果要避免使用浮点,但为什么要使用浮点,还可以对因子重新排序:

int total = 100 * mark / overall;

因为25/50在整数计算中是0。将一方转换为另一方将被隐式转换。它可以工作,但这很奇怪。如果你有充分的理由,为什么mark/overall*100不起作用?@Shuvo0o因为mark/overall将首先计算为0,所以将其乘以100将是。。。啊,好吧,这很有道理。谢谢整数算术在JLS中的确切定义是什么?@ingyhere见15.17.2是的,我看到了。它表示,如果提升的类型是int或long,则执行整数运算。但是,它没有为“整数算术”提供参考或明确定义,或者我找不到它。我想我们知道它是什么,但我很惊讶JLS没有提供对Knuth或其他东西的参考。