我有一個浮點數,比如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