流畅的python和cookbook学习笔记(四)
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
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'
流畅的python和cookbook学习笔记(四)的更多相关文章
- 流畅的python和cookbook学习笔记(七)
1.读写压缩数据文件 使用 gzip 和 bz2 模块来读写压缩文件,不过需要注意文件的模式,默认格式为二进制. # 读取压缩文件 import gzip with gzip.open('somefi ...
- 流畅的python和cookbook学习笔记(五)
1.随机选择 python中生成随机数使用random模块. 1.从序列中随机挑选元素,使用random.choice() >>> import random >>> ...
- 流畅的python和cookbook学习笔记(一)
1.数据结构 1.1 内置序列类型 四种序列类型: 1.容器序列:list.tuple和collections.deque 2.扁平序列:str.bytes.bytearray.memoryview和 ...
- 流畅的python和cookbook学习笔记(九)
1.减少可调用对象的参数个数,使用functools.partial冻结参数 使用functools.partial(),可以固定一个或者多个值,减少调用参数. >>> def sp ...
- 流畅的python和cookbook学习笔记(八)
1.函数的默认参数必须不可变 如果函数的默认参数为可变的对象,那么默认参数在函数外被修改也会影响到函数本身的. >>> def spam(a, b=None): # b要为不可变参数 ...
- 流畅的python和cookbook学习笔记(六)
1.同时迭代多个序列(zip(函数)) 使用zip()函数可以同时迭代多个序列. >>> X = [1, 2, 3, 4, 5, 6] >>> Y = [121, ...
- 流畅的python和cookbook学习笔记(三)
1.双向队列 collections.deque 类(双向队列)是一个线程安全.可以快速从两端添加或者删除元素的数据类型. rotate和popleft操作,rorate可以把前后元素换位.pople ...
- 流畅的python和cookbook学习笔记(二)
1.元组拆包和解压序列赋值 任何的序列 (或者是可迭代对象) 可以通过一个简单的赋值语句解压并赋值给多个 变量.唯一的前提就是变量的数量必须跟序列元素的数量是一样的. 1.平行赋值: >> ...
- python3.4学习笔记(四) 3.x和2.x的区别,持续更新
python3.4学习笔记(四) 3.x和2.x的区别 在2.x中:print html,3.x中必须改成:print(html) import urllib2ImportError: No modu ...
随机推荐
- 波利亚(Polya)罐子模型
(波利亚(Polya)罐子模型)罐中有a个白球,b个黑球,每次从罐中随机抽取一球,观察其颜色后,连同附加的c个同色球 (波利亚(Polya)罐子模型)罐中有a个白球,b个黑球,每次从罐中随机抽取一 ...
- swoft| 源码解读系列一: 好难! swoft demo 都跑不起来怎么破? docker 了解一下呗~
title: swoft| 源码解读系列一: 好难! swoft demo 都跑不起来怎么破? docker 了解一下呗~description: 阅读 sowft 框架源码, swoft 第一步, ...
- UML图基础
UML(Unified Model Language)统一建模语言,是对象管理组织(OMG)制定的一个通用的.可视化的建模标准语言,可以用来可视化.描述.构造和文档化软件密集型系统的各种工作.在学习设 ...
- mysqldump导出数据不带时区信息的问题
今天在导出数据时,发现所有timestamp字段都不带时区信息,因为我在东8区,导出的数据中所有时间都提早了8个小时 首先先看表的字段和数据 CREATE TABLE IF NOT EXISTS `a ...
- php生成N个不重复的随机数实例
思路: 将随机数存入数组,再在数组中去除重复的值,即可生成一定数量的不重复随机数. /* * array unique_rand( int $min, int $max, int $num ) * 生 ...
- linux校验时间
一. 基本方法:date -s "2018-09-02 04:23:45"clock -w 把时间写入cmos(一个RAM芯片) hwclock 查看硬件时间 hwclock ...
- c++和java在桌面应用软件开发的区别
之前一直用c/c++比较多.最近做的事情用java写了个小程序.发现java的工具包很多而且好找,c++的桌面应用工具包就不好找了. java在项目的buildpath里添加外部jar包即可,c++需 ...
- jQuery怎么获取到富文本ueditor编辑器里面的文字和图片内容
jQuery怎么获取到富文本ueditor编辑器里面的文字和图片内容 .创建编辑器 UE.getEditor('editor', { initialFrameWidth:"100%" ...
- Tr A(矩阵快速幂)
A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input 数据的第一行是一个T,表示有T组数据. 每组数据的第一行有n(2 <= n < ...
- Struts2和SpringMVC的action是单例还是原型的?
struts2的acion单独使用的时候应是多例的,也就是原型(prototype). 因为它是基于类开发的,它的三种获取页面传参的方式都是通过成员变量的方式来接受的. 如果用struts2框架基于方 ...