【问题标题】:Why does Java compile this equation: 78 / 10 * 10 + 10 - 78 equal to 2? [duplicate]为什么 Java 编译这个等式:78 / 10 * 10 + 10 - 78 等于 2? [复制]
【发布时间】:2021-03-15 23:47:46
【问题描述】:

我一直在尝试理解 java 运算符的优先级,但我无法理解有人给我的这个等式。通过自己添加括号,我得到 (((78 / 10) * 10) + 10) - 78 但这不应该等于 2。有人可以向我解释一下吗?谢谢

【问题讨论】:

  • 正因为如此,int除法会被截断。括号是不必要的。如果您想要数学上正确的答案,请使用floatdouble78.0 / 10 * 10 + 10 - 78,第一项中的.0 将确保使用double(或float?,查看文档)而不是@987654327 完成@.

标签: java operator-keyword operator-precedence


【解决方案1】:
78 / 10 = 7
7 * 10 = 70
70 + 10 = 80
80 - 78 = 2

记住一个 int /int 将是一个 int

float / int 将是一个浮点数,因此您可以执行以下操作:

(float)78 / 10 * 10 + 10 - 78 or 78.0 / 10 * 10 + 10 - 78

【讨论】:

  • 我真是个白痴,我完全忘记了它保持一个int,非常感谢。
  • 没问题,如果您清楚发生了什么,请接受答案
  • 添加到答案中如何通过强制转换(隐式或显式)来解决这个问题。
【解决方案2】:

这是因为在整数数学中 78 / 10 是 7,而不是 7.8

然后:

 7 * 10 = 70
   + 10 = 80
   - 78 =  2

【讨论】:

    猜你喜欢
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 2022-11-19
    • 2015-11-17
    相关资源
    最近更新 更多