Python3 CookBook | 数字处理

作者: yongxinz | 来源:发表于2017-12-01 20:12 被阅读15次

    文章首发于知乎专栏,欢迎关注。

    https://zhuanlan.zhihu.com/pythoncookbook

    以下测试代码全部基于 Python3。

    数字处理一般来说都比较简单,这篇文章主要介绍几个常见问题和常用函数。

    取整和四舍五入

    使用 int() 函数取整会直接丢弃小数位,不进行四舍五入。

    In [4]: int(1.63)
    Out[4]: 1
    
    

    round() 函数会根据所带参数确定保留的小数位数,然后输出四舍五入后的结果。

    In [6]: round(1.63)
    Out[6]: 2
    
    In [7]: round(1.63, 1)
    Out[7]: 1.6
    
    

    精确的浮点数运算

    浮点数计算最让我头疼的就是它的小误差,这种误差并不是每一次都会出现,有的时候想在页面上展示一个计算结果,突然发现这个结果变成了一大长串数字,然后还要修改代码,将这串数字格式化。

    In [8]: a = 1.1
    
    In [9]: b = 1.2
    
    In [10]: a + b
    Out[10]: 2.3
    
    In [11]: a = 4.2
    
    In [12]: b = 2.1
    
    In [13]: a + b
    Out[13]: 6.300000000000001
    
    

    如果想要避免这种情况可以使用 Decimal() 来进行精确计算,但这样的问题是会有一些性能上的损耗。

    In [14]: from decimal import Decimal
    
    In [15]: a = Decimal(2.1)
    
    In [16]: b = Decimal(4.2)
    
    In [17]: a + b
    Out[17]: Decimal('6.300000000000000266453525910')
    
    In [18]: a = Decimal('2.1')
    
    In [19]: b = Decimal('4.2')
    
    In [20]: a + b
    Out[20]: Decimal('6.3')
    
    

    需要注意的是,传入的参数需要是字符串,有点奇怪。

    随机数

    用 random 来生成随机数,该模块还提供了很多 function,特别有用。

    产生[0,1)之间的随机数。

    random.random()

    产生[min, max)之间的随机整数。

    random.randint(min, max)

    从可迭代对象中随机选取一个元素返回。

    random.choice(iterable)

    从可迭代对象中随机选取不重复的 k 个元素,以数组的形式进行返回。

    random.sample(iterable, k)

    在[start, stop)中以步长 step 进行步进,随机产生一个元素。

    random.randrange(start, stop, step)

    对序列进行原地随机打乱顺序,返回 None,一定要注意这是原地起作用的。

    random.shuffle(l)

    这里就不做具体演示了。

    关于数字还有很多其他操作,比如格式化输出,二八十六进制整数的转换,复数运算等等,但都不是很复杂,有的可能也不常遇到。

    未完待续。。。

    相关文章

      网友评论

        本文标题:Python3 CookBook | 数字处理

        本文链接:https://www.haomeiwen.com/subject/oszwbxtx.html