gpt4 book ai didi

java - parseFloat() 与 parseDouble()

转载 作者:搜寻专家 更新时间:2023-11-01 01:04:56 26 4
gpt4 key购买 nike

我正在尝试使用下面的代码将字符串转换为 float 和 double ,但结果不同。

代码:

 System.out.println(Float.parseFloat("120059389"));
System.out.println(Double.parseDouble("120059389"));

输出:

1.20059392E8
1.20059389E8

有人能解释一下为什么我在解析 float 和 double 中的字符串时得到不同的结果吗? float 和 double 的范围是多少?

最佳答案

这是因为您试图通过为 float 提供超出其处理能力的精度位数来解析它。 "ulp" (unit in last place) of a float那个大是 8.0,但是 "ulp" for a double这么大还是相当小的。也就是说,在那个幅度上,最接近的可能 float 值相差 8,但最接近的 double 值(更精确)相差很远更少。

System.out.println(Math.ulp(120059389f));
System.out.println(Math.ulp(120059389d));

这打印:

8.0
1.4901161193847656E-8

所以Float解析器必须使用最接近120059389真实值的float,恰好是1.20059392E8.

关于java - parseFloat() 与 parseDouble(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22970240/

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