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

将浮点数限制为两个小数点

将浮点数限制为两个小数点

将浮点数限制为两个小数点我想要a四舍五入13.95.>>> a13.949999999999999>>> round(a, 2)13.949999999999999这个round函数的工作方式与我预期的不一样。
查看完整描述

3 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

您正遇到浮点数的旧问题,所有数字都无法表示。命令行只是显示内存中完整的浮点表单。

在浮点数中,四舍五入的版本是相同的数字。由于计算机是二进制的,它们将浮点数存储为整数,然后除以2的幂,所以13.95将以类似于125650429603636838/(2*53)的方式表示。

双精度数字有53位(16位)的精度,规则浮点数有24位(8位)的精度。这个Python中的浮点使用双精度。来存储这些值。

例如,

  >>> 125650429603636838/(2**53)
  13.949999999999999

  >>> 234042163/(2**24)
  13.949999988079071

  >>> a=13.946
  >>> print(a)
  13.946
  >>> print("%.2f" % a)
  13.95
  >>> round(a,2)
  13.949999999999999
  >>> print("%.2f" % round(a,2))
  13.95
  >>> print("{0:.2f}".format(a))
  13.95
  >>> print("{0:.2f}".format(round(a,2)))
  13.95
  >>> print("{0:.15f}".format(round(a,2)))
  13.949999999999999

如果你在小数点后只有两位货币,那么你有几个更好的选择:1)使用整数和存储值的美分,而不是美元,然后除以100转换成美元。2)或使用不动点数,如十进制.


查看完整回答
反对 回复 2019-05-30
  • 3 回答
  • 0 关注
  • 715 浏览
慕课专栏
更多

添加回答

举报

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