gpt4 book ai didi

Java float 与 double

转载 作者:行者123 更新时间:2023-12-02 12:00:54 26 4
gpt4 key购买 nike

public class MyClass {
public static void main(String args[]) {
float x=2.0f;
float y=1.1f;

System.out.println("Float = " + (x - y));

double a=2.0d;
double b=1.1d;

System.out.println("Double = " + (a - b));
}
}

答案:

Float = 0.9
Double = 0.8999999999999999

我明白如果我想要更好的精度,我应该使用 BigDecimal ,但为什么float (与 double 相比,其精度较低的 32 位)不会遇到舍入问题吗?

最佳答案

我修改了代码以在舍入值之后立即打印每个结果的精确值:

Float = 0.9
0.89999997615814208984375
Double = 0.8999999999999999
0.899999999999999911182158029987476766109466552734375

double 结果比浮点结果更接近 0.9。这些是在任何其他计算中都会使用的值。

打印输出的差异是 Float 和 Double toString 方法的结果。每个目标都旨在产生最短的结果,在转换回相应的类型时,将产生原始值。 0.9 将在浮点解析时转换为 0.89999997615814208984375。在双重解析时它将转换为 0.90000000000000002220446049250313080847263336181640625 。唯一标识 double 比 float 需要更多的数字。

关于Java float 与 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47258180/

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