python——浮数点

喜欢编程,热爱分享,希望能结交更多志同道合的朋友,一起在学习Python的道路上走得更远!

python——浮数点

由于硬件的原因,使得计算机对于浮点数的处理总是不精确的。

例如,按照数学运算时,1.1-0.9=0.2,但实际得到的结果为:

1 >>> 1.1-0.9
2 0.20000000000000007

它以高精度的极限趋近的值来显示。上面的趋近结果大于按照数学运算结果,但并不总是如此,例如下面的运算则是小于数学运算的结果:

1 >>> 3.3-3.2
2 0.09999999999999964

由于浮点数不精确,所以尽量不要对两个浮点数数进行等值==和不等值!=比较.如果非要比较,应该通过它们的减法求绝对值,再与一个足够小(不会影响结果)的值做不等比较。

例如:

1 >>> (3.2-2.8) == 0.4
2 False
3
4 >>> abs((3.2-2.8)-0.4) < 0.0002
5 True

最后,浮点数并非总是输出很长精度的值。正如前面的运算:

1 >>> 3.2+3.2
2 6.4
3 >>> 3/10
4 0.3

浮点数有两个特殊方法,一个是is_integer(),用来测试这个浮点数是否是整数,另一个是as_integer_ratio(),可以将浮点数转换成分子分母组成的元组,不过这个方法并非总是如你所想的那样友好。例如:

1 >>> (3.0).is_integer()
2 True
3 >>> (3.2).is_integer()
4 False
5 
6 >>> (2.5).as_integer_ratio()
7 (5, 2)
8 >>> (2.6).as_integer_ratio()
9 (5854679515581645, 2251799813685248)

浮点数总是不精确的,而且不能指定小数位数。但在python中,有一个专门的小数模块decimal,它可以提供精确的小数运算,还有一个分数模块fractions,也能提供精确的小数运算。

觉得文章还可以的话不妨收藏起来慢慢看,有任何意见或者看法欢迎大家评论!

我是一名python开发工程师,从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习,
面试真题,面试真题,面试真题等。想要这些资料的可以进群:688244617

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值