2017-07-06 145 views
1

我希望在昏迷後總是有5個數字。在Python中將輸出格式化爲固定精度

示例: 我的數據是像105.56565 105 165.54 ......

我想是這樣的相同長度:105.56565 105.00000 165.54000 ....

腳本:

from pylab import* 
from rtlsdr import* 
from bluetooth import* 
import sys 

#configure device 
sdr= RtlSdr() 
sdr.sample_rate=double(sys.argv[3]) 
sdr.gain=double(sys.argv[2]) 
sdr.center_freq=double(sys.argv[1]) 

#Bluetooth connection 

server_sock=BluetoothSocket(RFCOMM) 
server_sock.bind(("",PORT_ANY)) 
server_sock.listen(1) 

port=server_sock.getsockname()[1] 
uuid="94f39d29-7d6d-437d-973b-fba39e49d4ee" 
client_sock,client_info=server_sock.accept() 

while(1): 
     samples=sdr.read_samples(256*1024) 
     result=psd(samples,NFFT=1024, Fs=sdr.sample_rate/1e6, Fc=sdr.center_freq*1e6/1e6) 
     freq=result[1]/1e6 
     value_freq=str(freq)[1:-1] 
     print format(freq, '%5f') // he do not work 

回答

1

在最後一行,我想你想做的事:

print "%5f" % freq 

希望這可以幫助!

-1

一個有些粗糙的方式來實現你想要什麼:

n = 105.5656534567 
n = float(str(n)[0:9]) 

print(n) 

給出:

105.56565 
+0

這會截斷數字,不會將其舍入到所需的小數位數。試試'n = 105.5656599999' – ktdrv

1

format內置(和str.format)所使用的格式,語言不太一樣的printf樣式格式由%運算符使用。您應該使用read the docs來了解該語言的詳細信息。

對於您的具體情況,我懷疑您需要format(freq, ".5f")。這將始終提供小數點後的五位數字。

+0

我這樣做:'tab_freq =(result []/1e6)tab_freq_convert = str(tab_freq)[1:-1] value_freq = format(tab_freq_convert,「.5f」)'但我有總是出現同樣的錯誤:'類型'str'的對象的未知格式代碼'f' – azzerty2017