在浮点数中保留两个小数点
使用浮点数时,通常希望将它们限制为特定值小数位数。但是,仅使用 round() 函数可能会导致意外结果,如以下行为所示:
>>> a 13.949999999999999 >>> round(a, 2) 13.949999999999999
出现这种情况是因为浮点数在准确表示所有数字方面存在限制。内存中存储的值并不总是与显示的值相同。
理解浮点精度
Python 中使用的双精度浮点数大约有16 位精度。这意味着像 13.95 这样的数字以类似于以下的方式表示:
125650429603636838/(2**53)
应用 round() 函数时,结果仍然是相同的浮点值,内部表示具有相同的限制。
>>> 125650429603636838/(2**53) 13.949999999999999
限制小数点的替代方法
如果仅显示两位小数是必要的,请考虑以下替代方案:
示例:
>>> a = 13.946 >>> print("%.2f" % a) 13.95 >>> print("{:.2f}".format(a)) 13.95 # Using decimal module >>> import decimal >>> a = decimal.Decimal('13.946') >>> a.quantize(decimal.Decimal('.01')) Decimal('13.95')
以上是如何在 Python 中可靠地保留浮点数中的两位小数?的详细内容。更多信息请关注PHP中文网其他相关文章!