Python实现数字的格式化输出
问题
你需要将数字格式化后输出,并控制数字的位数、对齐、千位分隔符和其他的细节。
解决方案
格式化输出单个数字的时候,可以使用内置的format()函数,比如:
>>>x=1234.56789 >>>#Twodecimalplacesofaccuracy >>>format(x,'0.2f') '1234.57' >>>#Rightjustifiedin10chars,one-digitaccuracy >>>format(x,'>10.1f') '1234.6' >>>#Leftjustified >>>format(x,'<10.1f') '1234.6' >>>#Centered >>>format(x,'^10.1f') '1234.6' >>>#Inclusionofthousandsseparator >>>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()方法中。比如:
>>>'Thevalueis{:0,.2f}'.format(x) 'Thevalueis1,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()要差一点。比如,在使用%操作符格式化数字的时候,一些特性(添加千位符)并不能被支持。
以上就是Python实现数字的格式化输出的详细内容,更多关于Python数字格式化输出的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。