顺理成章的python和cookbook学习笔记(四)流畅的python和cookbook学习笔记(四)

by admin on 2018年10月11日

1.数字的季放弃五合乎

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

  round
函数返回去她最近之偶数。也就是说,对 1.5 或者 2.5 的舍入运算都见面落
2。

>>> round(2.5)
2
>>> round(1.5)
2

  round()的参数ndigits可以是负数,取整到十号,百号,千位, 效果如下:

>>> a = 13123213
>>> round(a, -1)
13123210
>>> round(a, -2)
13123200
>>> round(a, -3)
13123000

  不要以舍入和格式化输出将混淆了。如果你的目的只是简单的出口一定幅度之累,
不需要使用 round() 函数。只需要以格式化的时节指定精度即可。

>>> x = 1.231231241
>>> format(x, '0.4f')
'1.2312'
>>> 'value is {:0.3f}'.format(x)
'value is 1.231'

1.数字的季放弃五可

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

  round
函数返回去它最近的偶数。也就是说,对 1.5 或者 2.5 的舍入运算都见面获取
2。

>>> round(2.5)
2
>>> round(1.5)
2

  round()的参数ndigits可以是负数,取整到十号,百号,千位, 效果如下:

>>> a = 13123213
>>> round(a, -1)
13123210
>>> round(a, -2)
13123200
>>> round(a, -3)
13123000

  不要拿舍入和格式化输出将混淆了。如果你的目的只是简单的出口一定幅度之再三,
不欲采用 round() 函数。只待以格式化的时段指定精度即可。

>>> x = 1.231231241
>>> format(x, '0.4f')
'1.2312'
>>> 'value is {:0.3f}'.format(x)
'value is 1.231'

2.准确的小数计算

  浮点数无法精确的表达有具有的十进制小数个。

>>> a = 4.2
>>> b = 2.1
>>> a + b
6.300000000000001
>>> (a + b) == 6.3
False

  可以以decimal模块来增长标准值,但是若牺牲局部性质。

>>> from decimal import Decimal
>>> a = Decimal('4.2')
>>> b = Decimal('2.1')
>>> a + b
Decimal('6.3')
>>> print(a + b)
6.3
>>> (a + b) == Decimal('6.3')
True

  控制位数和四舍五入。

>>> from decimal import localcontext
>>> a = Decimal('1.4')
>>> b = Decimal('1.9')
>>> print(a/b)
0.7368421052631578947368421053
>>> with localcontext() as num:
...     num.prec = 3
...     print(a/b)
...
0.737
>>> with localcontext() as num:
...     num.prec = 50
...     print(a/b)
...
0.73684210526315789473684210526315789473684210526316

2.纯粹的小数计算

  浮点数无法准确的抒发出装有的十进制小数各。

>>> a = 4.2
>>> b = 2.1
>>> a + b
6.300000000000001
>>> (a + b) == 6.3
False

  可以采用decimal模块来加强标准值,但是若牺牲局部属性。

>>> from decimal import Decimal
>>> a = Decimal('4.2')
>>> b = Decimal('2.1')
>>> a + b
Decimal('6.3')
>>> print(a + b)
6.3
>>> (a + b) == Decimal('6.3')
True

  控制位数和四舍五入。

>>> from decimal import localcontext
>>> a = Decimal('1.4')
>>> b = Decimal('1.9')
>>> print(a/b)
0.7368421052631578947368421053
>>> with localcontext() as num:
...     num.prec = 3
...     print(a/b)
...
0.737
>>> with localcontext() as num:
...     num.prec = 50
...     print(a/b)
...
0.73684210526315789473684210526315789473684210526316

3.格式化数值

  1.使内建函数format(),可以由定义保留多少个,居中游操作。想利用科学计算法,把
f 改吧 e 或 E 即可。

>>> x = 1234.56789
>>> format(x, '0.2f') # 保留两位小数
'1234.57'
>>> format(x, '>10.1f')  #左边留白
'    1234.6'
>>> format(x, '<10.1f')  #右边留白
'1234.6    '
>>> format(x, '^10.1f')  # 居中
'  1234.6  '
>>> format(x, ',')          # 显示千位
'1,234.56789'
>>> format(x, '0.1f')     # 保留一位小数
'1234.6'

   2.出口整数浮点数格式规则。

  b: 输出整数的二进制方式;

  c: 输出整数对应的Unicodez 字符;

  d: 输出整数对应之十进制方式;

  0: 输出整数对应之八进制方式;

  x: 输出整数对应的略微写十六进制方式;

  X: 输出整数对应的大写十六进制方式;

>>> '{0:b}, {0:c}, {0:d}, {0:o}, {0:x}, {0:X}'.format(2333)
'100100011101, झ, 2333, 4435, 91d, 91D'

 

3.格式化数值

  1.使内建函数format(),可以于定义保留多少位,居中游操作。想行使科学计算法,把
f 改呢 e 或 E 即可。

>>> x = 1234.56789
>>> format(x, '0.2f') # 保留两位小数
'1234.57'
>>> format(x, '>10.1f')  #左边留白
'    1234.6'
>>> format(x, '<10.1f')  #右边留白
'1234.6    '
>>> format(x, '^10.1f')  # 居中
'  1234.6  '
>>> format(x, ',')          # 显示千位
'1,234.56789'
>>> format(x, '0.1f')     # 保留一位小数
'1234.6'

   2.输出整数浮点数格式规则。

  b: 输出整数的二进制方式;

  c: 输出整数对应之Unicodez 字符;

  d: 输出整数对应的十进制方式;

  0: 输出整数对应的八进制方式;

  x: 输出整数对应之微写十六进制方式;

  X: 输出整数对应之大写十六进制方式;

>>> '{0:b}, {0:c}, {0:d}, {0:o}, {0:x}, {0:X}'.format(2333)
'100100011101, झ, 2333, 4435, 91d, 91D'

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图