Java在计算中给出错误答案

Java在计算中给出错误答案,java,android,Java,Android,我正在用Java做一些计算, 但出于某种原因,用一两行代码进行简单计算会得出错误的答案, 而另一方面,如果我分三步来做,它会完美无瑕 我知道再多走几步也没那么糟糕, 但是如果可以缩短,为什么还要使用额外的文本呢 如果我的数学错了,有人能给我一个指针吗 这是一行代码 percent1 = (((totaloutput1Int - Total1Int) / totaloutput1Int) * 100); also = (((2232 - 1590) / 2232) * 100) 这是多步骤代码

我正在用Java做一些计算, 但出于某种原因,用一两行代码进行简单计算会得出错误的答案, 而另一方面,如果我分三步来做,它会完美无瑕

我知道再多走几步也没那么糟糕, 但是如果可以缩短,为什么还要使用额外的文本呢

如果我的数学错了,有人能给我一个指针吗

这是一行代码

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

also = (((2232 - 1590) / 2232) * 100)
这是多步骤代码,确实有效

percent1step1 = (totaloutput1Int - Total1Int);

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

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

您需要将一些变量转换为双精度,以获得准确的答案
int
/
int
将给您一个
int
totaloutput1Int
Total1Int
int
更改为
double
,一切正常


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

因此,由于这是标记为Android的,我假设您使用的是Android Studio。它的一个重要特性是内衬(在大多数现代IDE中也可用)

拿这个来说:

float percent1step1 = (totaloutput1Int - Total1Int);

float percent1step2 = ((percent1step1 / totaloutput1Int)* 100);
如果右键单击%1步骤1并选择“重构->内联”,android studio将:

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

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

第一次和第二次计算的结果(不同)是什么?还有,什么类型是
percent1
percent2
?我使用了所有的整数,对于percent1step1和percent1step2,我尝试了浮点运算,第一次的计算结果是2232,第二次的计算结果是28.76344非常感谢,这很有效,该死,我很确定int/int应该也有效,谢谢,这很管用,该死,我很确定int/int应该也管用xD嘿,知道这一点真是太棒了:哦,这一点我以后一定要试试xD