将浮点数转换为某个精度,然后复制到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月正式发布),将添加fstring, 在这里看到更多的信息 ,这扩展了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(".", ",")