当前位置: 首页 > 面试题库 >

为什么int exp1 = 14/20 * 100; 在Java中等于“ 0”?

上官树
2023-03-14
问题内容

我正在尝试做一些基本的数学运算,并且一直以的形式弹出0。我敢肯定它与它有关,int但我不知道如何解决它。我需要使用整数,但是要得出这些整数的数学运算使用小数。我该怎么做?


问题答案:

这对于Blackberry而言并不特殊,它是标准的Java行为。

这是因为您正在执行整数数学运算:

int subexpr1 = 14 / 20; // 0
int subexpr2 =  subexpr1 * 100; // 0

请改用Double或更改顺序

int expr1 = (int) 14.0/20 * 100; // Very small possibility of rounding errors
int expr2 = 14 * 100 / 20; // Will ignore fraction parts


 类似资料:
  • 我可以理解,在大小数中,2.0并不等于2.00,因为2.00实际上使用了更高精度的数字。我很难理解为什么不被认为等于,因为这两个数字实际上使用相同数量的精确数字。依我看,它们只是完全相同数字的不同表示。 我知道,我可以使用和而不是,我只是对这背后的推理感兴趣。有人能帮我理解吗?

  • 问题内容: 为什么在Python中等于?它不应该像那样抛出异常吗? 问题答案: Wikipedia对历史进行了有趣的报道,并对以下内容的价值有不同的看法: 至少从19世纪初期开始,辩论一直在进行。当时,大多数数学家都同意,直到1821年,柯西(Cauchy)以及诸如未定义形式的表格之类的表达式才被列出。在1830年代,利比里(Libri)发表了令人信服的论点,莫比乌斯(Möbius)站在他身边。

  • 问题内容: 在Python中(我仅使用Python 3.6进行过检查,但我相信它也适用于许多以前的版本): 但: 为什么两种方法的结果不同?相等运算符对元组的处理方式是否不同? 问题答案: 前两个表达式都解析为元组: (即),然后是 ,其次是(仍然如此)。 由于逗号分隔符相对于相等运算符具有较高的优先级,因此将表达式进行拆分:Python看到一个元组包含两个表达式,其中一个恰好是一个相等测试,而不

  • 问题内容: 我注意到了Collections.sort的规格: 为什么这里需要“ ”?如果是extend ,那么我们是否不能保证a 仍然能够比较两个对象而没有“ ”部分? 换句话说,给出以下代码: 为什么即使不为Collections.sort()的声明指定“ ”,编译器也不足够聪明地知道这是可以的? 问题答案: Josh Bloch今年在Google I / O上做了一个名为“ 有效Java重新

  • 问题内容: 来自javascript类型的jQuery文档中的这段代码片段描述了转换为布尔值时字符串的行为(该主题与该问题无关,但这只是我找到代码的地方): 我得到了前三个示例,但没有得到最后一个示例,因为: 所以我假设: 但反而: 我什至不知道这是什么… 是因为: 如果是这样,这有什么目的? 问题答案: 返回一个不为null 的 对象 。非空对象始终是真实的。 结果,任何非null对象将始终为f