Python

Python,第1张

Python

你遇到了浮点数的老问题,不是所有的数字都能精确地表示。命令行只是向你显示内存中的完整浮点形式。
对于浮点表示,舍入的版本是相同的数字。由于计算机是二进制的,它们将浮点数存储为整数,然后除以2的幂,因此

13.95
将以类似于
1256504296036838/(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
如果仅排两个小数位(例如,显示货币值),那么你有两个更好的选择:

使用整数并以美分而不是美元存储值,然后除以100转换为美元。
或使用定点数(如小数)。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4905018.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存