Java中System.out.println会影响数学运算吗?为何404/10*10+1结果为401?
关于Java中System.out.println与整数运算的疑问解答
首先明确一点:System.out.println完全不会对数学运算产生影响,它只是负责把运算的最终结果打印输出而已。你遇到的结果差异,问题出在Java的整数运算规则上,和输出方法本身没关系。
为啥System.out.println(404 / 10 * 10 + 1)得到的是401而不是405?核心原因是Java里的整数除法会直接截断小数部分,不是四舍五入。我们一步步拆解运算过程:
- 先算
404 / 10:因为404和10都是int类型的整数,除法运算后结果也是int,所以404÷10的实际结果40.4会被直接截断成40,而非保留小数或四舍五入。 - 接着算
40 * 10:结果是400。 - 最后加1:400 + 1 = 401。
你预期的405,应该是默认把404 / 10当成了保留小数的运算(40.4),再乘以10得到404,加1就是405。但Java的整数运算不支持这种逻辑,如果想要得到这个结果,你需要把其中一个数改成浮点数,比如写成404.0 / 10 * 10 + 1,这样运算过程会按浮点数规则进行,结果就是405.0了。
简单总结:问题的本质是整数除法的截断特性,和System.out.println毫无关系,它只是忠实地输出了运算后的结果而已。
内容的提问来源于stack exchange,提问作者DreaM
相关产品推荐
相关产品推荐

