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.任何解释?
你是整数除法的受害者!
在计算机程序中划分整数需要特别小心.一些编程语言,处理整数除法(即通过给出整数商作为答案).所以答案是整数.
一些逻辑:
在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)