我是Java的新手,请帮助我:
System.out.println(3 * (4 / 5) * 6);
为什么答案为0?
答案 0 :(得分:8)
这是一个简单的BODMAS
表达式评估
(3 *(4/5)* 6)的评估将是;
1. (4/5)=0
2. 3*0=0
3. 0*6=0
为避免0回答,您可以将表达式修改为
1. (3 * (4.0 / 5.0) * 6) // return float value
2. (3*4*6)/5 //return integer value
3. (3 * (4/ 5.0) * 6) // return float value
在这些情况下,此表达式的答案将为非零
答案 1 :(得分:3)
(4 / 5)
为0,因为它们是整数值,0,8的结果舍入为0.做(4f / 5F)
。现在结果将像预期的那样。 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html这是一个有用的链接。
答案 2 :(得分:0)
因为您正在使用整数,而不是浮点数。 4 / 5
为0.8
,但整数无法存储该数字,因此会向下舍入为0
。然后,等式的其余部分将数字乘以零,这将始终导致0
。
将数字转换为3.0
,4.0
,5.0
,6.0
,将公式转换为基于浮点数的公式。
使用整数:
3 * (4 / 5) * 6 = 0
有花车:
3.0 * (4.0 / 5.0) * 6.0 = 14.4
答案 3 :(得分:0)
记住BODMAS规则
第一个操作将是divide
意味着4/5
将被评估,并且它会给出0
(因为4和5是整数,它给出0)并且任何乘以0
给出0
答案 4 :(得分:0)
“问题”就是这个词:
(4 / 5)
由于这两个数字均为int
,因此结果为int
。 java中的整数算术截断小数部分(它不会舍入),因此结果将为零(0.8
将变为0
)。
答案 5 :(得分:0)
你正在使用整数除法(因为 4 且 5 都是int ):
4 / 5 == 0 // 4/5 = 0 with remainder equals to 4: 0 * 5 + 4 == 4
这就是为什么整个公式
3 * (4 / 5) * 6 == 0
如果您希望将 4/5 视为浮点除法,并且其结果为 0.8 ,则应使用浮点数: 4.0 和 5.0
System.out.println(3 * (4.0 / 5.0) * 6); // <- 14.4
P.S。它不仅适用于Java,而且适用于C,C ++,C#以及
答案 6 :(得分:0)
因为你的情况下4/5 = 0&lt;&lt;它是整数除 要解决此问题,您可以按照以下步骤重写代码
System.out.println(3 * (4 /
5.0 ) * 6);
结果将是
14.400000000000002