python怎么使用int四舍五入_Python四舍五入与保留小数(精确舍入与保留)

本文深入讲解Python3中 四舍五入、截断保留 与 保留小数位数、取整 ,帮助Python初学者排坑!

总结不易,转载请标明出处:https://blog.csdn.net/weixin_41683971/article/details/105027654

0. 前言(吐槽)

作为一个Python初学者,偶然遇到需要利用Python3进行四舍五入的操作,就想着查一查有没有什么简单快捷的小函数一步到位。这不查不得了,一查就晕倒,网上的帖子和博客漫天飞,闭着眼睛瞎吹的文章一大堆,为了弄懂这一块,费了很多时间和精力。

刚开始很迷,毕竟是个Python小白,咱也不知道人家说的到底对不对,那就多看几个呗,看看咋回事,可谁成想越看越乱。

一开始基本都是“round函数可进行四舍五入运算”,然而我验证了一下发现round压根不行;

又看到有人说用格式控制字符“%.xf”直接就四舍五入到保留位数,emmm就仗着我是小白瞎告诉我呗;

再后来有个稍微好一点的,说用decimal模块的Decimal()+quantize(),还举了俩例子验证了下,emmm还自己把自己给验证错了,还说“原因未知,精度不高,慎用”…

于是我就自己去查了Python3.8.2的官方文档,看了decimal模块和round函数的说明,才恍然大悟。

好了,不多说,上干货!

1. 四舍五入(精确)

1.1 四舍五入并保留x位小数——用decimal模块中的Decimal方法(精度高)

① 数据存储需为字符串型

Decima(a)中的a需要是字符串形式的数字,而不能直接是浮点型数字,因为浮点型数据本身就不是精确的。Why?

假设你输入的是0.1+0.1+0.1,你以为是0.3(是你臆想的十进制运算得到0.3),但在计算机存储中是以二进制浮点数存储的(计算机会自动将你的十进制0.3转化为二进制0.3,但是计算机的二进制存储可不像0.3这么精确),其实它对应的是十进制的0.300000000031或其他,因此并不是精确的。

>>> 0.1 + 0.1 +0.1 == 0.3

False

>>> 0.1 + 0.1 + 0.1

0.30000000000000004

而使用字符串存储输入的数据就可以精确存储输入的数据,即输入是多少输出就是多少。

② 模块及函数引入

导入decimal模块,则调用模块中函数时需用 模块名.函数名(参数) 的形式''

>>> import decimal

>>> a = "1.345"

>>> a_t = Decimal(a).quantize(Decimal("0.01"), rounding = "ROUND_HALF_UP")

>>> print(a_t)

1.35

导入decimal模块中的Decimal函数,则调用时只需用该模块中的函数名(参数) 的形式

>>> from decimal import Decimal

>>> a = "1.345"

>>> #保留几位小数由像第二个括号中的几位小数决定,即保留两位小数,精确到0.01

>>> #如果想要四舍五入保留整数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值