我正在尝试将字符串解析为float但它给了我一些不同的输出。 假设我的代码:
String a = "111111111111111111111.23";
Float f = Float.parseFloat(a);
System.out.println(f);
它给了我类似的东西:1.1111111E20
以简单的方式,它给了我111111110000000000000
如何显示所有数据?我不想截断输入数据。
答案 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);
}