数字的格式化输出

问题

你需要将数字格式化后输出,并控制数字的位数、对齐、千位分隔符和其他的细节。

解法

格式化输出单个数字的时候,可以使用内置的 format() 函数,比如:

>>> x = 1234.56789
>>> # Two decimal places of accuracy
>>> format(x, '0.2f')
'1234.57'
>>> # Right justified in 10 chars, one-digit accuracy
>>> format(x, '>10.1f')
' 1234.6'
>>> # Left justified
>>> format(x, '<10.1f')
'1234.6 '
>>> # Centered
>>> format(x, '^10.1f')
' 1234.6 '
>>> # Inclusion of thousands separator
>>> format(x, ',')
'1,234.56789'
>>> format(x, '0,.1f')
'1,234.6'
>>>

如果你想使用指数记法,将 f 改成 e 或者 E(取决于指数输出的大小写形式)。比如:

>>> format(x, 'e')
'1.234568e+03'
>>> format(x, '0.2E')
'1.23E+03'
>>>

同时指定宽度和精度的一般形式是 ‘[<>ˆ]?width[,]?(.digits)?’ ,其中 width和 digits 为整数,?代表可选部分。同样的格式也被用在字符串的 format() 方法中。比如:

>>> 'The value is {:0,.2f}'.format(x)
'The value is 1,234.57'
>>>

讨论

数字格式化输出通常是比较简单的。上面演示的技术同时适用于浮点数和 decimal 模块中的 Decimal 数字对象。

当指定数字的位数后,结果值会根据 round() 函数同样的规则进行四舍五入后返回。比如:

>>> x
1234.56789
>>> format(x, '0.1f')
'1234.6'
>>> format(-x, '0.1f')
'-1234.6'
>>>

包含千位符的格式化跟本地化没有关系。如果你需要根据地区来显示千位符,你需要自己去调查下 locale 模块中的函数了。你同样也可以使用字符串的 translate()方法来交换千位符。比如:

>>> swap_separators = { ord('.'):',', ord(','):'.' }
>>> format(x, ',').translate(swap_separators)
'1.234,56789'
>>>

在很多 Python 代码中会看到使用 % 来格式化数字的,比如:

>>> '%0.2f' % x
'1234.57'
>>> '%10.1f' % x
' 1234.6'
>>> '%-10.1f' % x
'1234.6 '
>>>

这种格式化方法也是可行的,不过比更加先进的 format() 要差一点。比如,在使用 % 操作符格式化数字的时候,一些特性 (添加千位符adding thousands separators) 并不能被支持。

《Python Cookbook 3rd》笔记(3.3):数字的格式化输出相关推荐

  1. 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素

    <Python Cookbook 3rd>1.4:查找最大或最小的N个元素 问题 怎样从一个集合中获得最大或者最小的N个元素列表? 解法 heapq 模块有两个函数:nlargest()和 ...

  2. 《Python Cookbook 3rd》笔记汇总

    文章目录 一.数据结构 二.字符串和文本 三.数字.日期和时间 四.迭代器与生成器 五.文件与IO 一.数据结构 标题 关键词 1.1:拆分序列后赋值给多个变量 可迭代对象.拆分赋值 1.2:拆分任意 ...

  3. 《Python cookbook》笔记二

    <Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...

  4. Python Cookbook 3rd Edition Documentation

    Python Cookbook 3rd Edition Documentation 文章目录 第一章:数据结构和算法 1.1 解压序列赋值给多个变量 问题 解决方案 讨论 1.2 解压可迭代对象赋值给 ...

  5. Machine Learning with Python Cookbook 学习笔记 第8章

    Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...

  6. Machine Learning with Python Cookbook 学习笔记 第9章

    Chapter 9. Dimensionality Reduction Using Feature Extraction 前言 本笔记是针对人工智能典型算法的课程中Machine Learning w ...

  7. Machine Learning with Python Cookbook 学习笔记 第6章

    Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...

  8. oracle中如何格式化输出,【学习笔记】数据库日期时间格式化输出案例

    天萃荷净 分享一篇关于开发DBA在工作中常用到的日期时间格式化输出方法案例,含:mysql.sql server.oracle 3种数据库日期时间格式化输出 1.mysql数据库时间格式化输出 DAT ...

  9. 《Python Cookbook 3rd》笔记(3.1):数字的四舍五入

    数字的四舍五入 问题 你想对浮点数执行指定精度的舍入运算. 解法 对于简单的舍入运算,使用内置的 round(value, ndigits) 函数即可.比如: >>> round(1 ...

最新文章

  1. 项目中常用的git指令
  2. nyoj 720 项目安排(dp+二分优化)
  3. HYSBZ 1588 营业额统计 平衡二叉树模板
  4. centos6.4 源码安装mysql5.5
  5. 数据结构思维 翻译完成
  6. 用GA算法设计22个地点之间最短旅程-R语言实现
  7. hdoj 4940 强连通图
  8. 字符匹配算法之KMP
  9. 网络安全等级测评师培训(初级)----2021.6.6
  10. 怀念《100部经典动漫大回顾》 你还记得几部?(附图)
  11. linux需要安装杀病毒软件,我在Linux上需要安装反病毒软件吗?
  12. std::packaged_task 源码分析
  13. Dual Illumination Estimation for Robust Exposure Correction阅读札记
  14. .nte连接数据库常见问题,Unknown column '张三' in 'where clause'
  15. Chrome HackBar工具下载
  16. android盒子远程,电视盒子ADB教程 通过ADB远程安装应用方法
  17. 云原生|斯人若彩虹,遇到方知有【Python代码实现】
  18. 通过形状先验引导的3D目标检测方法(Disp R-CNN解读)
  19. DBMS_REPAIR
  20. 利用云服务器部署论坛网站系统discuz

热门文章

  1. char * 转LPCTSTR若干方法
  2. python复制文件的代码_python 复制文件流程
  3. 【转】深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第四节 参数传递对堆栈的影响 1
  4. 01-单一职责原则(SPR)
  5. 让TFS忽略packages文件夹的更改
  6. Java中Lambda表达式与方法引用和构造器引用
  7. 【转】TFS上分支和标签的用法
  8. layui templet格式化_layui数据表格日期如何格式化成2012-12-30这样的?
  9. iar stm32_树莓派玩转STM32开发(一)——介绍篇
  10. 【Python CheckiO 题解】Remove Accents