使用Java算法获取错误的输出

时间:2013-12-03 18:32:26

标签: java int double

我想这是一个非常简单的任务,但由于我是java的新手,我觉得这很难。我一直保持-1,但是当我编译它时,输出是:1。任何人都可以解释为什么以及如何输出:1。谢谢

class Test {

    public static void main (String [] args) {

        double x = 3.14; //3.14
        int m = (int) (x-5); //3.14 - 5 = -1.83 --> (int )-1 
        int k = m + m * m -m; // -1 + (-1*-1) - 1 --> -1???
        System.out.println(k); // -1??

    }
}

2 个答案:

答案 0 :(得分:1)

第一行是给定的:

double x = 3.14; //3.14

第二行是截断减法的结果:

int m = (int) (x-5); //3.14 - 5 = -1.83 --> -1 

此时,这只是数学。不要忘记减去负数与添加绝对值相同:

int k = m + m * m -m; // -1 + (-1*-1) - 1 --> -1 + 1 - (-1) --> 0 - (-1) --> 1
  1. -1 +( - 1 * -1) - ( - 1)
  2. -1 + 1 + 1
  3. 0 + 1
  4. 1

答案 1 :(得分:1)

-1 +( - 1 * -1) - ( - 1)= 1.您忘记减去负数。