加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python中是否有内置的自定义数字格式?

发布时间:2020-12-20 11:15:25 所属栏目:Python 来源:网络整理
导读:在C#中,我可以做(#.####),它在小数点后打印最多4位有效数字. 1.2 – 1.2 1.234 – 1.234 1.23456789 – 1.2345 Afaik,在python中,只有c风格的%.4f,如果需要的话,它总是会打印到最后用0填充的4个小数点. 我不想要那些0. 对于实现我需要的最干净的方法有什么
在C#中,我可以做(#.####),它在小数点后打印最多4位有效数字.
1.2 – > 1.2
1.234 – > 1.234
1.23456789 – > 1.2345

Afaik,在python中,只有c风格的%.4f,如果需要的话,它总是会打印到最后用0填充的4个小数点.
我不想要那些0.

对于实现我需要的最干净的方法有什么建议吗?

一种可能的解决方案是首先打印它并自己修剪结束0,但希望找到更聪明的方法.

解决方法

看起来您可以使用“g” format specifier作为.format()字符串函数(仅在python 2.6中可用):

>>> x = 1.2
>>> print "{0:0.4g}".format(x)
1.2
>>> x = 1.234565789
>>> print "{0:0.4g}".format(x)
1.235

这包括小数点前后的数字,这就是你得到1.235(舍入1.2345到4位数)的原因.如果你只想要右边的有效数字,你必须做一些有趣的事情

>>> x = 1.23456789
>>> # length of the number before the decimal
>>> left_sigdigs = len(str(x).partition(".")[0])
>>> format_string = "{0:0." + str(4 + left_sigdigs) + "g}"
>>> print format_string.format(x)
1.2346

请注意,它仍然是圆形的,与您的示例不同.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读