Java在计算上给出了错误的答案

时间:2015-07-18 16:31:30

标签: java android

我正在尝试用Java做一些计算, 但由于某种原因,1或2行代码中的简单计算给出了错误的答案, 而另一方面,如果我分3步完成它,它可以完美地工作。

我知道在更多步骤中做某事并不是那么糟糕, 但为什么要使用额外的文字,如果可以缩短?

如果我的数学错误会有人给我一个指针吗?

这是1行代码

percent1 = (((totaloutput1Int - Total1Int) / totaloutput1Int) * 100);

also = (((2232 - 1590) / 2232) * 100)

这是可行的多步骤代码。

percent1step1 = (totaloutput1Int - Total1Int);

percent1step2 = ((percent1step1 / totaloutput1Int)* 100);

percent1Tv.setText(String.valueOf(percent1step2));

3 个答案:

答案 0 :(得分:5)

totaloutput1IntTotal1Intint更改为double,一切正常。

在第一种方法中,int / int导致四舍五入值。这导致了不同的结果。

答案 1 :(得分:1)

您需要将一些变量转换为double才能获得准确的答案。 int / int将为您提供int Take a look at this question

答案 2 :(得分:1)

因此,这是标记为Android的,我假设您使用的是Android Studio。其中一个很棒的功能是内嵌(也可以在大多数现代IDE中使用)。

拿这个:

float percent1step1 = (totaloutput1Int - Total1Int);

float percent1step2 = ((percent1step1 / totaloutput1Int)* 100);

如果您右键单击percent1step1并选择“refactor-> inline”,android studio将会这样:

float percent1step2 = ((((float)(totaloutput1Int - Total1Int)) / totaloutput1Int)* 100);

因此它向您展示了如何在没有多行的情况下实现内联。在这种情况下,结果会将int从减法转换为float