Java不断回答错误答案

时间:2014-12-24 17:14:27

标签: java

a是微调器的值。

private void toolCalculateActionPerformed(java.awt.event.ActionEvent evt) {
    Integer a = (int) toolSpinner.getValue();

    if (toolEnch.getSelectedIndex() == 0) {
        double p;
        p = (10 ^ (2 - a) * 13 ^ a);
        double x = Math.round(p);
        System.out.println(x);
    }
}

我在做10^(2-a) * 13^a

让我们说微调器是1,它返回6,它应该返回130。

假设微调器位于2,它返回8,应该返回169。

我用WolframAlpha测试了它,它给了我正确的结果。然而,这个程序给了我一些方法。 关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:7)

^是异或,而不是指数。如果您想要指数,请使用Math.pow

p = Math.pow(10, (2-a)) * Math.pow(13, a);

答案 1 :(得分:1)

你的操作写入的优先级错误,^是异或非POW,实际上你必须自己使用括号来处理优先级。因为括号的优先级高于每个操作。 使用数学课 像这样改变p变量行:

p = Math.pow(10, (2-a)) * Math.pow(13, a); // it will be 130.0 in double format when a is 1

如果你想要计算其他任何像XOR的东西 你必须在大多数时间里自己处理自己的堕落! 像这样:

 int a = 1;
 double p = 0;
 p = ((10 + (2-a)) * (13 + a));
 System.out.println(p);; // this will be 154.0 in double format.

但是这个:

 int a = 1;
 double p = 0;
 p = (10 + (2-a) * (13 + a));
 System.out.println(p); // will print 24.0 in double format.