繁体   English   中英

Java中的float数据类型精度

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM