我是靠谱客的博主 单纯吐司,最近开发中收集的这篇文章主要介绍python之decimal模块来解决计算结果出现好多.9999,造成精度不准确,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

由于Python 中使用双精度浮点数来存储小数。在 Python 使用的 IEEE 754 标准(52M/11E/1S)中,8字节64位存储空间分配了52位来存储浮点数的有效数字,11位存储指数,1位存储正负号,即这是一种二进制版的科学计数法格式。虽然52位有效数字看起来很多,但麻烦之处在于,二进制小数在表示有理数时极易遇到无限循环的问题。其中很多在十进制小数中是有限的,比如十进制的 1/10,在十进制中可以简单写为 0.1 ,但在二进制中,他得写成:0.0001100110011001100110011001100110011001100110011001……(后面全是 1001 循环)。因为浮点数只有52位有效数字,从第53位开始,就舍入了。这样就造成了标题里提到的”浮点数精度损失“问题。 舍入(round)的规则为“0 舍 1 入”,所以有时候会稍大一点有时候会稍小一点。


例如:

print(350*1.4)

结果为:489.99999999999994

代码改进:

import decimal 
a = decimal.Decimal('350')
b = decimal.Decimal('1.4')
c = a * b    
print(c)

结果为:490.0

最后

以上就是单纯吐司为你收集整理的python之decimal模块来解决计算结果出现好多.9999,造成精度不准确的全部内容,希望文章能够帮你解决python之decimal模块来解决计算结果出现好多.9999,造成精度不准确所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部