![](/img/trans.png)
[英]How does long value fit in float data type in Java without loss of precision
[英]float data type precision in Java
存储为单精度浮点数时的数字0.1的值为0.100000001490116119384765625(来源: https ://www.h-schmidt.net/FloatConverter/IEEE754.html),但在Java中打印为0.1。 我认为这是因为Java将float中的小数位数限制为7。 如何增加显示的小数位数?
float x = 0.1f;
System.out.printf("%.17f", x);
0.10000000149011612
您可以使用BigDecimal显示所有数字。
System.out.println(new BigDecimal(0.1f));
System.out.println(new BigDecimal(0.1));
这显示了精确的表示。 float
最多显示24位数, double
显示最多53位数,因为这是尾数中的位数。
0.100000001490116119384765625
0.1000000000000000055511151231257827021181583404541015625
这避免了需要计算出要显示的位数。
System.out.println(new BigDecimal(0.125f));
System.out.println(new BigDecimal(0.125));
版画
0.125
0.125
因为这个值没有表示错误,因为它是2 ^ -3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.