我是一名经验丰富的 php 开发人员,刚刚开始学习 Java。我目前正在学习 Lynda 的一些课程,但我仍处于早期阶段。我正在编写示例程序,要求用户输入并进行简单的计算之类的事情。
昨天我遇到这样的情况:
double result = 1 / 2;
以我穴居人的大脑,我会想result == 0.5
,但不,不是在 Java 中。显然1 / 2 == 0.0
。是的,我知道如果我将其中一个操作数更改为双精度,结果也将是双精度。
这实际上让我害怕。我不禁认为这很破碎。认为整数除法会得到整数的想法是非常天真的。我认为这种情况甚至很少见。
但是,由于 Java 的使用非常广泛,并且正在寻找“为什么 Java 的划分被打破了?”没有产生任何结果,我可能是错的。
我的问题是:
- 为什么分裂会有这样的表现?
- 我还能在哪里找到这样的魔法/巫毒/意外行为?
Java 是一种强类型语言,因此您应该了解表达式中值的类型。如果不...
1
is an int
(as 2
), so 1/2
是 1 和 2 的整数除法,所以结果是0
as an int
。然后将结果转换为对应的double值,所以0.0
.
整数除法与浮点数除法不同,就像数学中的那样(自然数除法与实数除法不同)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)