Java和Python中运算符优先级的不同结果

时间:2014-10-29 19:38:49

标签: java python javac operator-precedence operations

我注意到在java和python中编译这个操作时有两个不同的结果。

10 / 3 + 2 * 4 / 3 - 3

导致java = 2.0
     在python = 3.0

我也在许多计算器中执行此操作,结果是3.0可以解释java如何解决这个问题吗?

double var = 10/3+2*4/3-3;
System.out.println(var);

3 个答案:

答案 0 :(得分:3)

表达式组件将被评估为整数,即中间值被截断(10/3评估为32*4/3评估为2,依此类推。)

更改为以下内容将导致3.0

double var = 10.0 / 3.0 + 2.0 * 4.0 / 3.0 - 3.0;

答案 1 :(得分:2)

在java中:

10 / 3 + 2 * 4 / 3 - 3
(10 / 3) + (2 * (4 / 3))) - 3
3 + (2 * 1) - 3
3 + 2 - 3
2

所有东西都被转换为int,这就是为什么它会给出这个结果。

答案 2 :(得分:0)

Java 遵循与 Python 不同的顺序或运算符:

Java : PMDRAS - 括号、乘法、除法、余数、加法、减法。

Python : PEMDAS - 括号、指数、乘法、除法、加法、减法。