为什么%舍入

时间:2016-01-22 15:27:57

标签: java rounding modulus

所以今天在学校,我们学习了一些java中的数学课,但我并不特别理解为什么它会自动从-11.87到-12。

import java.util.*;
public class println{
    public static void main (String [] args){

        System.out.println(8 % 3 / 15 - 12);

    }
}

4 个答案:

答案 0 :(得分:3)

它没有"向上"。这里完成的步骤非常简单:

    评估
  • 8%3。模运算符%返回整数除法的剩余部分8/3(因此它返回2)
  • 评估
  • 2 / 15215都是java中的整数(int)。整数除法将切断任何小数位。所以这个表达式将被评估为0!
  • 评估
  • 0 - 12。结果为-12

答案 1 :(得分:1)

原因是您在表达式中提供的所有数字都是非浮点数的形式。因此,JVM不处理具有浮点数的表达式。

8 % 3 = 2
2 / 15 = 0
0 - 12 = -12

由于没有数字是浮点数(例如双数),这就是操作实际进行的方式。

答案 2 :(得分:0)

你的表达非常丑陋:

  System.out.println(((8 % 3) / 15) - 12);

首先评估

 (8 % 3) = 2 

并且

 (2/15) = 0

最后

 0-12 =-12

答案 3 :(得分:0)

为了理解这一点,你应该理解Java中整数和双精度的结构。例如,如果你这样编码,它就不会“向上”。

public class println {
public static void main(String[] args) {

    System.out.println(8.0 % 3.0 / 15.0 - 12.0);

}}

因为你使用的数字是整数(没有任何小数)。如果您以双重形式给出数字,程序会为您提供确切的结果,即-11.866666666666667。