java - 为什么Java的划分被打破了?

标签 java division

我是一名经验丰富的 php 开发人员,刚刚开始学习 Java。我目前正在学习 Lynda 的一些类(class),但我仍处于早期阶段。我正在编写示例程序,要求用户输入并进行简单的计算之类的事情。

昨天我遇到了这样的情况:

double result = 1 / 2;

以我的穴居人的大脑,我会认为结果== 0.5,但不,不是在Java中。显然 1/2 == 0.0。是的,我知道如果我将其中一个操作数更改为 double ,结果也将是 double 。

这实际上让我害怕。我不禁认为这很 splinter 。认为整数除法会得到整数的想法是非常天真的。我认为这种情况甚至很少。

但是,由于 Java 的使用非常广泛,并且正在寻找“为什么 Java 的除法被破坏?”没有产生任何结果,我可能是错的。

我的问题是:

  1. 为什么除法会这样?
  2. 我还能在哪里找到这样的魔法/巫毒/意外行为?

最佳答案

Java 是一种强类型语言,因此您应该了解表达式中值的类型。如果没有...

1int(如 2),因此 1/2 是 1 的整数除法和 2,因此结果是 0 作为 int。然后将结果转换为相应的 double 值,即 0.0

整数除法与 float 除法不同,就像数学中的那样(自然数除法与实数除法不同)。

关于java - 为什么Java的划分被打破了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41034020/

相关文章:

r - 如何最好地在 R 的数据框中将一个因素的不同级别相互划分?

java - Java 中的输出错误。希望得到帮助。

java - Android到电脑FTP断点上传奇怪现象

Python 数学除法运算返回 0

C# 数学给出了错误的结果!

c++ - 大多数编译器是否将 % 2 转换为位比较?真的更快吗?

c++ - 自定义 "Very Long Int"分区问题

java - 如何过滤 LocalContainerEntityManagerFactoryBean 扫描的实体?

java - 通过鼠标点击随机改变矩形的颜色

java - Spring 4 MVC - Rest 服务 - 在 bean 中使用默认值