java - 计算给出不同的结果

标签 java android

我正在尝试在 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/

相关文章:

Java字符串包含 "splitted"字符串

android - 尝试将项目转换为 Gradle 后,Gradle 同步失败

java - 显示特定目录中的所有图像

java - Gson - 从 JSON 字符串中获取值

Android 动画留下伪影

java - android套接字连接更新图形

java - 是否可以在 Hibernate 的同一个项目中同时使用注释和 hbm.xml 文件?

java - quickfix.InvalidMessage 即使有有效消息也会抛出异常

java - 给定 3 个 vector 和角度,如何找到第四个 vector ,以便通过所有 vector 形成 2 条线段

java - 通过 Camel cxf 组件连接 SOAP 端点时,无法在 WrapperClassOutInterceptor 处转换为 java.lang.String 错误