我正在尝试在 Android 中计算公式:
percent = absence/(week*(37/period))*100;
缺勤
的值为4
,周为2
,周期为2
。 百分比
返回11.111111
。
但如果我在 Excel 中使用公式 4/(2*(37/2))*100
执行相同操作,则会返回 10.81
。
谁能解释一下可能出了什么问题吗?
最佳答案
这是因为整数除法。
The value for absence is 4, week is 2, and period is 2. percent returns 11.111111.
这是因为 37/2 是 18.5,而小数部分因整数除法而被丢弃。得到 18,乘以 2 得到 36。接下来我们将 4 除以 36,得到 0.111...乘以 100 得到 11.111...
But if I do the same in Excel with formula 4/(2*(37/2))*100, it returns 10.81.
这是因为 Excel 不使用整数除法。 37/2 为 18.5,18.5 * 2 为 37。4/37 为 0.108108108...因此乘以 100 约为 10.81。
<小时/>说明
它进行整数除法的原因是因为你有一个整数句点
。 Java 看到有两个整数并且正在被除法,因此它使用整数除法。这会导致所有小数部分被删除,这意味着从 37/2 得到的 18.5 中的 0.5 被删除,从而导致结果不同。
修复
您可以通过将除法中的至少一个操作数设置为浮点或 double 来“修复”此问题:
double percent = absence/(week*((double) 37/period))*100;
这将实现浮点除法,给出 10.8108...
关于java - 计算给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39559472/