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学习笔记(四)的更多相关文章

  1. 流畅的python和cookbook学习笔记(七)

    1.读写压缩数据文件 使用 gzip 和 bz2 模块来读写压缩文件,不过需要注意文件的模式,默认格式为二进制. # 读取压缩文件 import gzip with gzip.open('somefi ...

  2. 流畅的python和cookbook学习笔记(五)

    1.随机选择 python中生成随机数使用random模块. 1.从序列中随机挑选元素,使用random.choice() >>> import random >>> ...

  3. 流畅的python和cookbook学习笔记(一)

    1.数据结构 1.1 内置序列类型 四种序列类型: 1.容器序列:list.tuple和collections.deque 2.扁平序列:str.bytes.bytearray.memoryview和 ...

  4. 流畅的python和cookbook学习笔记(九)

    1.减少可调用对象的参数个数,使用functools.partial冻结参数 使用functools.partial(),可以固定一个或者多个值,减少调用参数. >>> def sp ...

  5. 流畅的python和cookbook学习笔记(八)

    1.函数的默认参数必须不可变 如果函数的默认参数为可变的对象,那么默认参数在函数外被修改也会影响到函数本身的. >>> def spam(a, b=None): # b要为不可变参数 ...

  6. 流畅的python和cookbook学习笔记(六)

    1.同时迭代多个序列(zip(函数)) 使用zip()函数可以同时迭代多个序列. >>> X = [1, 2, 3, 4, 5, 6] >>> Y = [121, ...

  7. 流畅的python和cookbook学习笔记(三)

    1.双向队列 collections.deque 类(双向队列)是一个线程安全.可以快速从两端添加或者删除元素的数据类型. rotate和popleft操作,rorate可以把前后元素换位.pople ...

  8. 流畅的python和cookbook学习笔记(二)

    1.元组拆包和解压序列赋值 任何的序列 (或者是可迭代对象) 可以通过一个简单的赋值语句解压并赋值给多个 变量.唯一的前提就是变量的数量必须跟序列元素的数量是一样的. 1.平行赋值: >> ...

  9. python3.4学习笔记(四) 3.x和2.x的区别,持续更新

    python3.4学习笔记(四) 3.x和2.x的区别 在2.x中:print html,3.x中必须改成:print(html) import urllib2ImportError: No modu ...

随机推荐

  1. day04.2-迭代器

    1. 迭代器协议: 对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代(只能往后走,不能往前退). 2. 可迭代对象:实现了迭代器 ...

  2. ajax 提交 json格式数据到后台

    例子:$.ajax({ type: 'POST', url: "/ROOT/modify.do", contentType: "application/json" ...

  3. [ActionScript 3.0] 获取TextFiled字符边框

    /***** * getCharBoundaries () 方法 :返回一个矩形,该矩形是字符的边框. * getCharIndexAtPoint() 方法基于鼠标单击的 localX 和 local ...

  4. Java 之多态

    Java 之多态(包含封装) 基础知识: Java 在处理基本数据类型(例如int ,char,double)时,都是采用按值传递的方式执行,除此之外的其它类型都是按引用传递的方式执行.对象除了在函数 ...

  5. java反射介绍

    反射是java中的非常重要的一项机制,也称做reflection.它让java在运行中对自身进行检查,并能直接操作程序的内部属性或方法. 反射机制中常用的类 Reflection api中的内部信息有 ...

  6. P4168 [Violet]蒲公英 区间众数

    $ \color{#0066ff}{ 题目描述 }$ 在乡下的小路旁种着许多蒲公英,而我们的问题正是与这些蒲公英有关. 为了简化起见,我们把所有的蒲公英看成一个长度为n的序列 \((a_1,a_2.. ...

  7. ubuntu->错误

    1.dpkg *** locked 原因:安装某个包不成功, 可以使用命令 dpkg --configure -a 来重启中断的安装过程 如果屡次安装不成功放弃安装,则删除 lock 2.flashp ...

  8. ubuntu下Android反编译详细教程-apktool,dex2jar,jd-gui的使用

    转载请注明出处:http://blog.csdn.net/fightlei/article/details/52432161 最近在学习Android反编译的一些知识,虽然在网上搜到了很多相关的文章, ...

  9. Angular material mat-icon 资源参考_Navigation

    ul,li>ol { margin-bottom: 0 } dt { font-weight: 700 } dd { margin: 0 1.5em 1.5em } img { height: ...

  10. django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066

    1 聚合和分组 聚合:对一些数据进行整理分析 进而得到结果(mysql中的聚合函数) 1aggregate(*args,**kwargs) : 通过对QuerySet进行计算 ,返回一个聚合值的字典. ...