为什么这个整数方程输出0

时间:2013-12-17 11:48:53

标签: java math

我是Java的新手,请帮助我:

System.out.println(3 * (4 / 5) * 6);

为什么答案为0?

7 个答案:

答案 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 / 50.8,但整数无法存储该数字,因此会向下舍入为0。然后,等式的其余部分将数字乘以零,这将始终导致0

将数字转换为3.04.05.06.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