浮点数到字符串的转换输出不同

Float to string conversion output differs

我正在尝试将字符串解析为浮点数,但它给了我一些不同的输出。 假设我的代码:

String a = "111111111111111111111.23";
Float f = Float.parseFloat(a);
System.out.println(f);

它给了我这样的东西:1.1111111E20

以简单的方式,它给了我111111110000000000000

如何显示所有数据?我不想截断输入数据。

How to get whole data as it is. Don't want to truncate the input data.

那么无论你做什么,都不要使用 float。在 至少 使用 double,但即使 double 也会与该值斗争,因为 IEEE-754 双精度浮点数仅精确到 大约 15 位数字,以 10 为基数表示。要获得更高的精度,请查看 BigDecimal

BigDecimal 从不自动舍入或失去精度,在计算中是首选。

一个float是一个用32位表示的十进制数字类型。

A double 是一个 64 位十进制数,因此它可以表示比浮点​​数更大的值。

您可以使用 BigDecimal

public static void main(String[] args) {
        String a = "111111111111111111111.23";
        BigDecimal f = new BigDecimal(a);
        System.out.println(f);
    }

输出

111111111111111111111.23