将浮点数转换为某个精度,然后复制到String
我有一个浮点数,比如说135.12345678910
。 我想将该值连接到一个string,但只想要135.123456789
。 通过打印,我可以通过执行以下操作轻松完成此操作:
print "%.9f" % numvar
numvar
是我的原始数字。 有没有一个简单的方法来做到这一点?
用python <3(例如2.6(见注释)或2.7),有两种方法可以这样做。
# Option one older_method_string = "%.9f" % numvar # Option two newer_method_string = "{:.9f}".format(numvar)
但是请注意,对于Python版本3(如3.2或3.3),选项2是首选 。
有关选项2的更多信息,我build议从python文档的string格式的链接 。
而对于选项一的更多信息, 这个链接就足够了,并有各种标志的信息 。
更新:Python 3.6(2016年12月正式发布),将添加f
string, 在这里看到更多的信息 ,这扩展了str.format方法(使用花括号,使得f"{numvar:.9f}"
解决原问题)。
使用一轮:
>>> numvar = 135.12345678910 >>> str(round(numvar,9)) '135.123456789' >>>
Python 3.6 | 2017年
为了说清楚,你可以使用f-string格式。 这与format
方法几乎相同的语法,但使它更好一点。
例:
print(f'{numvar:.9f}')
关于新fstring的更多阅读:
- Python 3.6中的新function (与上述链接相同)
- PEP官方文档
- Python官方文档
- 真是不错的博客文章,也谈谈性能 :
这不是打印格式,它是string的属性,所以你可以使用
newstring = "%.9f" % numvar
如果直到运行时才能知道精度,则此其他格式选项非常有用:
>>> n = 9 >>> '%.*f' % (n, numvar) '135.123456789'
str函数有bug。 请试试这个。 你会看到'0,196553',但是正确的输出是'0,196554'。 原因str函数默认值是ROUND_HALF_UP。
>>> value=0.196553500000 >>> str("%f" % value).replace(".", ",")