我有一个浮点数,比如135.12345678910
。我想将该值连接到一个字符串,但只想要135.123456789
。拥有打印,我可以很容易地做这样的事情做到这一点:将浮点数转换为某个精度,然后复制到字符串
print "%.9f" % numvar
与numvar
是我原来的号码。是否有捷径可寻?
我有一个浮点数,比如135.12345678910
。我想将该值连接到一个字符串,但只想要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)3210。
有关选项二的更多信息,我建议this link on string formatting from the python docs。
对于选项一的更多信息,this link will suffice and has info on the various flags。
UPDATE:Python的3.6(以2016年12月正式发布),将添加f
字符串文字,see more info here,它扩展了str.format方法(使用大括号,使得f"{numvar:.9f}"
解决原来的问题)。
这不是打印,做的格式,这是字符串的属性,所以你可以只使用
newstring = "%.9f" % numvar
或者使用新风格格式。格式(数字) – Zaren 2013-03-07 05:40:06
使用轮:
>>> numvar = 135.12345678910
>>> str(round(numvar,9))
'135.123456789'
>>>
如果精度是未知的,直到运行时,这个其他格式选项是有用的:
>>> n = 9
>>> '%.*f' % (n, numvar)
'135.123456789'
STR函数具有错误。请试试这个。您将看到'0,196553',但正确的输出是'0,196554'。原因str函数默认值为ROUND_HALF_UP。
>>> value=0.196553500000
>>> str("%f" % value).replace(".", ",")
只是要说清楚,您可以使用f-string格式。这与format
方法的语法几乎相同,但使其更好一些。
实施例:
print(f'{numvar:.9f}')
关于新的F串更多读数:
要设置精度具有9个数字,得到:
print "%.9f" % numvar
返回精度与2个位数:
print "%.2f" % numvar
返回精度与2位和float转换值:
numvar = 4.2345
print float("%.2f" % numvar)
%正是这样做 - %不是打印函数的一部分,而是字符串 - 请参阅[Python文档](http://docs.python.org/2/library/stdtypes.html#string-formatting-operations) – 2013-03-07 05:21:14