Py3——数字日期和时间

http://python3-cookbook.readthedocs.io

数字的四舍五入

?对一个浮点数执行指定精度的舍入运算

对于简单的舍入运算,使用内置的 round(value,ndigits)函数即可。

In [1]: round(3.14,1)
Out[1]: 3.1

In [2]: round(3.1415,3)
Out[2]: 3.142

In [3]: round(-3.14,1)
Out[3]: -3.1

当一个值处在两个边界中间的时候,round函数会返回离他最近的偶数。当 ndigits 为负数时,舍入运算会作用于十位,百位,千位等

对于数据的格式化,如输出一定宽度的数,不需要使用round()函数:

In [1]: x = 3.1415926

In [2]: format(x,'0.2f')
Out[2]: '3.14'

In [3]: format(x,'0.4f')
Out[3]: '3.1416'

执行精确的浮点运算

?在对精确度要求比较高的情况下,需要对浮点数执行精确的计算操作,不希望出现任何小误差

在常规的计算中,浮点数的一个普遍问题是他们并不能精确的表示十进制数。即使是最简单的数学计算也会产生小的误差,

In [4]: a = 3.1

In [5]: b = 3.2

In [6]: a + b
Out[6]: 6.300000000000001

就如上面的例子,一个简单的加法运算,一眼就看出的结果,在python中却计算错误。这些错误是由底层cpu和IEEE 754标准通过自己的浮点单位去执行算术时的特征,由于python的浮点数据类型使用底层表示存储数据。简单的来说就是小数部分进行二进制转换时和精度取舍时产生了误差。

想要更加精确并且能容忍一定的性能损耗:

In [13]: from decimal import Decimal

In [14]: a = Decimal('3.1')

In [15]: b = Decimal('3.2')

In [16]: a+b
Out[16]: Decimal('6.3')

decimal模块还允许你控制计算的每一方面,包括数字位数和四舍五入运算:

In [17]: from decimal import localcontext

In [18]: a = Decimal('1.3')

In [19]: b = Decimal('1.7')

In [20]: print(a/b)
0.7647058823529411764705882353

In [25]: with localcontext() as ctx:
    ...:     ctx.prec=3
    ...:     print(a/b)
    ...:     
0.765
In [26]: with localcontext() as ctx:
    ...:     ctx.prec=50
    ...:     print(a/b)
    ...:     
0.76470588235294117647058823529411764705882352941176

数字的格式化输出

?希望将数字格式化后输出,并控制数字的位数,对齐,千位分隔符以及其他一些细节
在上面的例子中,已经接触过了 format 函数:

In [27]: x = 1234.56789

In [28]: format(x,'0.2f')
Out[28]: '1234.57'

In [29]: format(x,'>10.2f')
Out[29]: '   1234.57'   #占10个位,右对齐

In [30]: format(x,'<10.2f')
Out[30]: '1234.57   '   #占10个位,左对齐

In [31]: format(x,'^10.1f')
Out[31]: '  1234.6  '   #占10个位,居中

In [32]: format(x,',')
Out[32]: '1,234.56789'

In [33]: format(x,'0,.1f')
Out[33]: '1,234.6'

二八十六进制整数

在 python 中要实现不同进制间的整数转换是简单的

In [34]: x = 1234

In [35]: bin(x)
Out[35]: '0b10011010010'

In [36]: oct(x)
Out[36]: '02322'

In [37]: hex(x)
Out[37]: '0x4d2'

In [38]: format(x,'b')
Out[38]: '10011010010'

In [39]: format(x,'o')
Out[39]: '2322'

In [40]: format(x,'x')
Out[40]: '4d2'

将其他进制转换为十进制的话,可以使用 int 方法

In [41]: int('10011010010',2)
Out[41]: 1234

随机选择

random 模块是一个很常见也很常用的随机模块,可以满足我们很多的日常需求

  • 生成随机整数
>>> import random
>>> random.randint(0,10)
3
>>> random.randint(0,10)
0
>>> random.randint(0,10)
10
  • 生成随机浮点数(0-1之间的小数)
random.random()
  • 从一个序列中随机选择元素
list = [1,3,5,7,8,6,4,2]
random.choice(list)
  • 提取N个不同元素
random.sample(values,2)
  • 打乱序列中的元素顺序
random.shuffle(values)

基本的日期和时间转化

python中的时间和日期

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值