为什么我在Java中的计算错误?

时间:2013-11-01 23:29:56

标签: java

我使用此代码来计算某些内容,但几乎在所有情况下结果都是0.0。为什么?编译器中没有警告或错误。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {
        int potsum = Integer.valueOf(jTextField1.getText());
        int bla = Integer.valueOf(jTextField2.getText());
        float result = ((Integer.valueOf(bla)/Integer.valueOf(potsum)) * 100);
        jLabel3.setText(Float.toString(result));
    } catch (NumberFormatException e) {
        System.out.println("Error!");
    }
}

4 个答案:

答案 0 :(得分:1)

这是因为这是整数除法的整数。在分割之前将它们都放在浮动状态,你应该得到正确的结果。

答案 1 :(得分:0)

float result = ((Integer.valueOf(bla)/Integer.valueOf(potsum)) * 100);

执行整数除法,该值除以值(1/2 => 0,2 / 3 => 0,3 / 3 => 1)。

考虑类型转换或使除法的分子/分母成为浮点值。

float result = Integer.valueOf(bla) * 100.0f / Integer.valueOf(potsum);

float result = (float)Integer.valueOf(bla) / Integer.valueOf(potsum) * 100.0f;

float result = Integer.valueOf(bla) / (float)Integer.valueOf(potsum) * 100.0f;

我要补充一点,我经常看到人们将分区作为表达式中的最后一个运算符,主要是因为它澄清了意图,并不要求人们理解操作顺序+评估是如何从左到右。

答案 2 :(得分:0)

您需要转换为float,否则它看起来像Java的整数算术。

float result = bla * 100f/ potsum;

请注意百分比的正确计算。

答案 3 :(得分:0)

float result = ((Float.valueOf(bla)/Float.valueOf(potsum)) * 100);