当前位置: 首页 > 面试题库 >

在java中为什么 1/3 == 0?

拓拔欣嘉
2023-03-14
问题内容

运行下面的代码结果为0?

public static void main(String[] args) {
    double g = 1 / 3;
    System.out.printf("%.2f", g);
}

问题答案:

两个操作数(1和3)是整数,因此使用整数算术(此处为除法)。将结果变量声明为double只会导致除法后发生隐式转换。

当然,整数除法会返回除法四舍五入的真实结果。因此,0.333…此处的结果四舍五入为0。(请注意,处理器实际上不进行任何舍入,但是您仍然可以这样考虑。)

另外,请注意,如果两个操作数(数字)均以浮点数给出;3.0和1.0,甚至只是第一个,然后使用浮点运算,就可以得到0.333…。



 类似资料:
  • 问题内容: Python如何评估表达式? 我插了多少,这就是答案。请任何人可以解释这种行为 因为它是印刷,因为它是印刷 问题答案: 您的表情与: 可以在任何数字表达式之前使其为负,或不执行任何操作(存在对称性选项)。带有负号: 和 我看到您澄清了您的问题,说您来自C背景。在Python中,没有像C和C这样的增量运算符,这可能是造成混淆的原因。要递增或递减变量,或在Python中使用以下样式:

  • 问题内容: 在中,将1月定义为第0个月,而不是第1个月。是否有任何特定原因? 我已经看到很多人对此感到困惑… 问题答案: 它只是Java日期/时间API的一团糟。列出问题所在将花费很长时间(而且我确定我不知道其中一半是问题)。诚然,处理日期和时间是很棘手的,但是无论如何都是这样。 帮个忙,改用Joda Time或JSR-310。 编辑:至于原因-如其他答案所述,这很可能是由于旧的C API引起的,

  • 我用libgdx用Java做了一个应用程序。我需要使用屏幕的高度和1080的比例。因此,我创建了一个名为rh的浮点数,它等于gdx.graphics.getheight()/1080 请救命!提前谢了。 p.s:gdx.graphics.getheight()以nr的像素为单位获取屏幕的高度。

  • 问题内容: 为什么呢?如我所料是0。 问题答案: 所有移位都针对整数进行mod 32,对long进行mod 64。 从规范的第15.19节开始: 如果左侧操作数的提升类型为,则仅将右侧操作数的最低5位用作移位距离。就像右侧操作数受到掩码值0x1f的按位逻辑AND运算符&(§15.22.1)一样。因此,实际使用的移动距离始终在0到31(含)范围内。 如果左侧操作数的提升类型为,则仅将右侧操作数的六个

  • 为什么这个程序的输出是而不是 当你除以3/2,它等于1.5,我认为Java只取整数的第一个值。发生什么事?