我是一名高中生,目前正在为州学术会议(UIL)做准备。我有一个问题,我到处找,似乎找不到答案!为什么要打印0.0?
double d = 1/2;
System.out.println(d);
这是因为1
和2
是int
值,因此根据java语言规范,对int
操作数进行算术运算的结果也是int
。结果的任何非整数部分都将被丢弃-即小数部分被截断,0.5
-
当值分配给d
时,会自动从int
到double
进行加宽转换,但转换是在int
结果上进行的,该结果是一个整数0
。
如果"修复"问题,通过在数字文字中添加"d",使其中一个操作数双
:
double d = 1d/2;
System.out.println(d); // "0.5"
根据语言规范,当算术运算的一个操作数是double
时,结果也是double
。
1和2都是整数,因此1/2==0
。在将结果分配给变量之前,它不会被转换为double
,但到那时已经太晚了。如果要进行浮点除法,请执行1.0/2
。
这是因为数据类型。
当您执行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,甚至只是第一