gpt4 book ai didi

java - 扩大转换期间精度损失

转载 作者:行者123 更新时间:2023-12-02 12:47:35 25 4
gpt4 key购买 nike

下面代码的输出是

package com.ajay.compoitepattern;
class Test {
public static void main(String[] args) {
int big = 1234567890;
float approx = big;
System.out.println(big - (approx));
System.out.println(big - (int)(approx));
}
}

该程序的输出是

0.0
-46

我的问题是,如果在加宽转换中精度丢失,那么第一个精度应该是 -46sysout也是,为什么第一个输出是0.0?

最佳答案

第一个输出是 0.0,因为 float 从 int 中减去,并使整个语句变为 float。

这意味着 int big 也转换为 float 值。基本上你正在做的是(大约 - 大约)作为 (float)big = approx.这应该就是你得到零的原因。

如果你也想试试这个

System.out.println(big/(approx));

intfloat之间的运算将整个语句转换为float

关于java - 扩大转换期间精度损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17667981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com