为了账号安全,请及时绑定邮箱和手机立即绑定

Java中的浮点数据类型精度

Java中的浮点数据类型精度

慕盖茨4494581 2022-07-27 20:38:59
当存储为单精度浮点数时,数字 0.1 的值为 0.100000001490116119384765625(来源:https ://www.h-schmidt.net/FloatConverter/IEEE754.html ),但它在 Java 中打印为 0.1。我认为这是因为 Java 将浮点数的小数位数限制为七位。如何增加显示的小数位数?
查看完整描述

2 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

float x = 0.1f;

System.out.printf("%.17f", x);


0.10000000149011612


查看完整回答
反对 回复 2022-07-27
?
MYYA

TA贡献1868条经验 获得超4个赞

您可以使用 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


查看完整回答
反对 回复 2022-07-27
  • 2 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信