Java中的浮点数据类型精度

当存储为单精度浮点数时,数字 0.1 的值为 0.100000001490116119384765625(来源:https ://www.h-schmidt.net/FloatConverter/IEEE754.html ),但它在 Java 中打印为 0.1。我认为这是因为 Java 将浮点数的小数位数限制为七位。如何增加显示的小数位数?



慕盖茨4494581
浏览 117回答 2
2回答

呼如林

float x = 0.1f;System.out.printf("%.17f", x);0.10000000149011612

MYYA

您可以使用 BigDecimal 显示所有数字。System.out.println(new BigDecimal(0.1f));System.out.println(new BigDecimal(0.1));这显示了精确的表示。float最多显示 24 位,double最多显示 53 位,因为这是尾数中的位数。0.1000000014901161193847656250.1000000000000000055511151231257827021181583404541015625这避免了需要计算要显示多少位数。System.out.println(new BigDecimal(0.125f));System.out.println(new BigDecimal(0.125));印刷0.1250.125因为这个值没有表示错误,因为它是 2^-3
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java