python cookbook 学习笔记 第三章 数字日期和时间(1) 数字的四舍五入

本文详细介绍了如何使用Python内置的round()函数进行浮点数的四舍五入操作,包括正数和负数的精度控制。同时,探讨了round()与格式化输出的区别,以及在处理浮点数精度问题时的常见误区。
  • 数字的四舍五入
  • 问题:
    • 对浮点数执行指定精度的舍入运算
  • 解决方案:
    • 对于简单的舍入运算,使用内置的round(value, ndigits)函数即可。比如:
round(1.23, 1)  # 1.2
round(1.27, 1)  # 1.3
  • 传给round()函数的 ndigits 参数可以是负数,这种情况下,舍入运算会作用在十位、百位、千 位等上面。比如:
a = 1627731
round(a, -1)  # 1627730
round(a, -2)  # 1627700
round(a, -3)  # 1628000
  • 讨论: 不要将舍入和格式化输出搞混了。如果只是简单的输出一定宽度的数,不需要使用round()函 数。仅仅需要在格式化的时候指定精度即可。比如:
x = 1.23456
format(x,"0.3f")  # 1.235
  • (这不还是舍入吗?书上是这么说的。暂时笔记就这么做吧)

  • 同样,不要试着舍入浮点值来“修正”表面上看起来正确的问题。比如:

a = 2.1
b = 4.2
c = a + b  # 6.300000000000001

c = round(c, 2)  # 6.3
  • (可是,我明明要求保留两位小数,怎么结果是1位呢?先这么着吧,看看后面怎么说)

  • 对于大多数使用浮点的程序,没有必要也不推荐这样做。尽管在计算的时候会有小小的误差,但是这些 小的误差是能被理解和容忍的。如果不能允许这样的小误差,那么就要考虑使用 decimal 模块了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值