我是一名经验丰富的 php 开发人员,刚刚开始学习 Java。我目前正在学习 Lynda 的一些类(class),但我仍处于早期阶段。我正在编写示例程序,要求用户输入并进行简单的计算之类的事情。
昨天我遇到了这样的情况:
double result = 1 / 2;
以我的穴居人的大脑,我会认为结果== 0.5
,但不,不是在Java中。显然 1/2 == 0.0
。是的,我知道如果我将其中一个操作数更改为 double ,结果也将是 double 。
这实际上让我害怕。我不禁认为这很 splinter 。认为整数除法会得到整数的想法是非常天真的。我认为这种情况甚至很少。
但是,由于 Java 的使用非常广泛,并且正在寻找“为什么 Java 的除法被破坏?”没有产生任何结果,我可能是错的。
我的问题是:
- 为什么除法会这样?
- 我还能在哪里找到这样的魔法/巫毒/意外行为?
最佳答案
Java 是一种强类型语言,因此您应该了解表达式中值的类型。如果没有...
1
是 int
(如 2
),因此 1/2
是 1 的整数除法和 2,因此结果是 0
作为 int
。然后将结果转换为相应的 double 值,即 0.0
。
整数除法与 float 除法不同,就像数学中的那样(自然数除法与实数除法不同)。
关于java - 为什么Java的划分被打破了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41034020/