当前位置: 首页 > 知识库问答 >
问题:

为什么1/2==0使用double?[副本]

漆雕修能
2023-03-14

我是一名高中生,目前正在为州学术会议(UIL)做准备。我有一个问题,我到处找,似乎找不到答案!为什么要打印0.0?

double d = 1/2;
System.out.println(d);

共有3个答案

景翰音
2023-03-14

这是因为12int值,因此根据java语言规范,对int操作数进行算术运算的结果也是int。结果的任何非整数部分都将被丢弃-即小数部分被截断,0.5-

当值分配给d时,会自动从intdouble进行加宽转换,但转换是在int结果上进行的,该结果是一个整数0

如果"修复"问题,通过在数字文字中添加"d",使其中一个操作数

double d = 1d/2;
System.out.println(d); // "0.5"

根据语言规范,当算术运算的一个操作数是double时,结果也是double

曾涵育
2023-03-14

1和2都是整数,因此1/2==0。在将结果分配给变量之前,它不会被转换为double,但到那时已经太晚了。如果要进行浮点除法,请执行1.0/2

贾兴学
2023-03-14

这是因为数据类型。

当您执行1/2时,这是整数除法,因为两个操作数都是整数,因此它解析为零(0.5四舍五入为零)。

如果您将其中任何一个转换为double,您将得到一个double结果。

double d = 1d/2;

或者

double d = 1/2.0;
 类似资料:
  • 可能的重复: Java如何处理整数下溢和上溢,您将如何检查它? system.out.println(4*2147483647)在Java中如何等于-4? 我想知道这为什么成立:

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

  • 问题内容: 为什么在Python中等于?它不应该像那样抛出异常吗? 问题答案: Wikipedia对历史进行了有趣的报道,并对以下内容的价值有不同的看法: 至少从19世纪初期开始,辩论一直在进行。当时,大多数数学家都同意,直到1821年,柯西(Cauchy)以及诸如未定义形式的表格之类的表达式才被列出。在1830年代,利比里(Libri)发表了令人信服的论点,莫比乌斯(Möbius)站在他身边。

  • 问题内容: 运行下面的代码结果为0? 问题答案: 两个操作数(1和3)是整数,因此使用整数算术(此处为除法)。将结果变量声明为double只会导致除法后发生隐式转换。 当然,整数除法会返回除法四舍五入的真实结果。因此,0.333…此处的结果四舍五入为0。(请注意,处理器实际上不进行任何舍入,但是您仍然可以这样考虑。) 另外,请注意,如果两个操作数(数字)均以浮点数给出;3.0和1.0,甚至只是第一