哪个错了?Java,数学还是我......?困惑...!

Gok*_* KP -1 java expression arithmetic-expressions

我有以下SOP:

System.out.println(9 - ((9 / 2) * 2));
Run Code Online (Sandbox Code Playgroud)

从我在学校学到的数学,它应该评估0.

但我得到的输出是1...... !!!

我已经尝试在输出中评估Google中的相同表达式0.

根据数学,Java评估为1,它被评估为0.任何解释?

Ale*_* C. 6

你是整数除法的受害者!

在计算机程序中划分整数需要特别小心.一些编程语言,处理整数除法(即通过给出整数商作为答案).所以答案是整数.

一些逻辑:

在Java中:

9/2 = 4 
4*2 = 8
9-8 = 1
Run Code Online (Sandbox Code Playgroud)

在真实生活中 :

9/2 = 4.5
4.5*2 = 9
9-9 = 0
Run Code Online (Sandbox Code Playgroud)

为了避免这种情况,您可以在您的部门中将其中一个参数强制转换为double:

System.out.println(9 - (((double)9 / 2) * 2));
Run Code Online (Sandbox Code Playgroud)

  • 其余的死因为他们使用`==`而不是`equals`. (2认同)