gpt4 book ai didi

java - java中浮点值解析

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

当我这样做的时候

value = Float.parseFloat("5555998.558f");

System.out.println("Value: " + value);

它给了我结果5555998.5而不是5555998.558我正在使用变量值进行一些计算。我需要确切的值,即 5555998.558

如何克服这个问题?

最佳答案

该高值处的 float 值的精度仅为 0.5,因此 Java 将其解析为最接近的 float 值 = 5555998.5,这就是打印的内容。

要查看该幅度的 2 个最接近值之间的差异,请使用 Math.ulp (最后一位单位):

String s = "5555998.558f";
float value = Float.parseFloat(s);
System.out.println(value);
System.out.println(Math.ulp(value));

这会打印

5555998.5
0.5

您可以使用精度更高的double:

double d = Double.parseDouble(s);
System.out.println(d);
System.out.println(Math.ulp(d));

这会打印

5555998.558
9.313225746154785E-10

有趣的是,Double.parseDouble 似乎并不介意末尾的 fDouble.parseDoubleString 转换为 double “由 Double 类的 valueOf 方法执行”。和Double.valueOf状态:

FloatValue:

  • Signopt NaN

  • Signopt Infinity

  • Signopt FloatingPointLiteral

  • Signopt HexFloatingPointLiteral

  • SignedInteger

此方法将采用 String,就好像它是 Java 数字文字一样,Java 支持该数字文字,并在末尾添加 f 来指示浮点文字。

关于java - java中浮点值解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26182982/

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