将浮点数转换为特定精度,然后复制到字符串

时间:2013-03-07 05:14:47

标签: python string floating-point

我有一个浮点数,比如135.12345678910。我想将该值连接到一个字符串,但只想要135.123456789。通过打印,我可以通过执行以下操作轻松完成此操作:

print "%.9f" % numvar

numvar是我的原始号码。有一个简单的方法吗?

7 个答案:

答案 0 :(得分:138)

使用Python< 3(例如2.6 [见注释]或2.7),有两种方法可以做到。

# Option one
older_method_string = "%.9f" % numvar

# Option two
newer_method_string = "{:.9f}".format(numvar)

但请注意,对于3以上的Python版本(例如3.2或3.3),选项2为preferred

有关选项二的更多信息,我建议this link on string formatting from the Python documentation

有关选项一的更多信息,this link will suffice and has info on the various flags

Python 3.6(2016年12月正式发布),添加了f字符串文字see more information here,它扩展了str.format方法(使用大括号,{{1} }解决原始问题),即

f"{numvar:.9f}"

解决了这个问题。查看@ Or-Duan的答案以获取更多信息,但此方法快速

答案 1 :(得分:42)

Python 3.6 | 2017

为了说清楚,您可以使用f-string格式。这与format方法具有几乎相同的语法,但使它更好一些。

示例:

print(f'{numvar:.9f}')

关于新f字符串的更多阅读:

Enter image description here

答案 2 :(得分:37)

使用round

>>> numvar = 135.12345678910
>>> str(round(numvar, 9))
'135.123456789'

答案 3 :(得分:7)

这不是打印格式化,它是字符串的属性,所以你可以使用

newstring = "%.9f" % numvar

答案 4 :(得分:6)

如果直到运行时才知道精度,则此其他格式设置选项很有用:

>>> n = 9
>>> '%.*f' % (n, numvar)
'135.123456789'

答案 5 :(得分:2)

要设置9位数的精度,请获取:

print "%.9f" % numvar

2位数的返回精度:

print "%.2f" % numvar 

返回2位数的精度和浮点转换值:

numvar = 4.2345
print float("%.2f" % numvar) 

答案 6 :(得分:-1)

str函数有错误。请尝试以下方法。你会看到' 0,196553'但正确的输出是' 0,196554'因为str函数的默认值是ROUND_HALF_UP。

>>> value=0.196553500000 
>>> str("%f" % value).replace(".", ",")