Java 为什么这个整数方程输出0
我是Java新手,请帮助我:Java 为什么这个整数方程输出0,java,math,Java,Math,我是Java新手,请帮助我: System.out.println(3 * (4 / 5) * 6); 为什么答案是0?(4/5)是0,因为它们是整数值,0,8的结果四舍五入为0。执行(4f/5F)。现在结果将和预期的一样。这是一个非常有用的链接。因为您使用的是整数,而不是浮点数4/5是0.8,但整数不能存储该数字,因此将其向下舍入为0。然后方程的其余部分是将数字乘以零,这将始终导致0 将数字转换为3.0,4.0,5.0,6.0,将等式转换为基于浮点的等式 带整数: 3*(4/5)*6=0 使
System.out.println(3 * (4 / 5) * 6);
为什么答案是0?
(4/5)
是0,因为它们是整数值,0,8的结果四舍五入为0。执行(4f/5F)
。现在结果将和预期的一样。这是一个非常有用的链接。因为您使用的是整数,而不是浮点数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
记住BODMAS规则
第一个操作将是
除法
意味着将计算4/5
,它给出0
(因为4和5是整数,它给出0),任何与0
相乘的运算都给出0这是一个简单的BODMAS
表达式求值
将对(3*(4/5)*6)进行评估
若要避免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
在这些情况下,此表达式的答案将为非零问题是这个术语:
(4 / 5)
因为两个数字都是int
,所以结果将是int
。java中的整数运算会截断小数部分(它不会取整),因此结果将为零(0.8
将变为0
)。您使用的是整数除法(因为4和5都是整数):
这就是为什么整个公式
3 * (4 / 5) * 6 == 0
如果希望将4/5视为浮点除法,并使其结果为0.8,则还应使用浮点数:4.0和5.0
System.out.println(3 * (4.0 / 5.0) * 6); // <- 14.4
System.out.println(3*(4.0/5.0)*6);// 因为在您的例子中,4/5=0可以将其更改为双精度并获得小数位数,否则4/5=0.8在Java中整数将舍入为0。你自己试试看。System.out.println(4\5);在小学,你可能会用余数进行整数除法。4除以5等于0,剩余4。或者保持整数do(3*4*6)/5-将尽可能保持精度,而无需使用浮点或双精度。
3 * (4 / 5) * 6 == 0
System.out.println(3 * (4.0 / 5.0) * 6); // <- 14.4
14.400000000000002