python3的float数精度_python浮点数精度问题

python浮点数的计算,结果并不像我们想象的那样,比如:

>>> 0.25+0.25-0.4

0.09999999999999998

>>> 0.6+0.3-0.26

0.6399999999999999

在计算机上面运算的结果是我们实际期望的结果并不一致,导致这样的根本原因就是: 计算机 十进制与二进制之间的转换

计算机只认识二进制,十进制之间的运算,需要将十进制转换为二进制在进行二进制之间的运算

python中有两种方法可以解决浮点数精度问题

第一种: 使用decimal模块

>>> import decimal

>>> a= decimal.Decimal('0.25')

>>> b= decimal.Decimal('0.25')

>>> c= decimal.Decimal('0.4')

>>> print(a+b-c)

0.10

可以看到,相比普通运算的结果,使用 decimal 模块得到的结果更精确。

第二种: fractions 模块

>>> from fractions import Fraction

>>> 10/3

3.3333333333333335

>>> print(Fraction(10,3))

10/3

可以看出,通过 fractions 模块能很好地解决浮点类型数之间运算的问题

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值