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

时间:2015-06-18 08:40:09

标签: java string floating-point-conversion

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

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

它给了我类似的东西:1.1111111E20

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

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

2 个答案:

答案 0 :(得分:6)

  

如何获取整个数据。不想截断输入数据。

然后无论你做什么,都不要使用float至少使用double,但即使double也会遇到这个值,因为IEEE-754双精度浮点数只能精确到粗略以10为基数表示的15位数。要获得更高的精度,请查看BigDecimal

答案 1 :(得分:2)

location /assets { root /usr/share/nginx/html; location ~ .*.(js|css|html|png)+$ { # Use for debugging # add_header 'X-static-gzipping' 'on' always; gzip_static on; } } 永远不会自动舍入或失去精度,这在计算中是首选。

BigDecimal是以32位表示的十进制数字类型。

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

您可以使用double

BigDecimal

<强>输出

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