我有一个浮点数,比如135.12345678910
。我想将该值连接到一个字符串,但只想要135.123456789
。通过打印,我可以通过执行以下操作轻松完成此操作:
print "%.9f" % numvar
numvar
是我的原始号码。有一个简单的方法吗?
答案 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)
为了说清楚,您可以使用f-string格式。这与format
方法具有几乎相同的语法,但使它更好一些。
示例:
print(f'{numvar:.9f}')
关于新f字符串的更多阅读:
答案 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(".", ",")