我在「.fits」表中存儲了一個值(應該沒有這個問題)。 我看了表,並做Python在打印和讀取時的不同值
In [2]: a['RA_touse'][0]
Out[2]: 161.65813
這是真正的存檔值。不過,我這樣做:
In [3]: print a['RA_touse'][0]
161.658
我得到一個截斷值。我正在使用python和POSTGRES,並且這種行爲給出了一些精度問題。
任何人都可以向我解釋這種行爲,以及如何解決它?我需要我的數據保持相同的格式,而不是更改它(即repr()函數會將所有內容都轉換爲字符串)。
非常感謝!
編輯爲清楚:
我使用python腳本來創建數據庫。我要做的就是
con = psycopg2.connect('todatabase')
cur = con.cursor()
for i in vector_of_something:
value1 = table['column1'][i]
value2 = table['column2'][i]
values = (values1,values2)
values = [str(value) for value in values]
command = 'INSERT INTO table values (%s,%s)'
cur.execute(command,values)
con.commit()
的問題是,我得到「161.658」在數據庫中作爲一個結果,而不是1.65813。
你在Python和數據庫中使用了哪些數據類型?您將失去使用浮點值的十進制表示的精度。另外,當打印數字格式時會發生截斷,這實際上並不反映存儲值的精度損失。 – 2013-04-30 15:23:33
我在這種情況下使用浮動。我有這樣的:value = a ['RA_touse'] [0]然後將其轉換爲字符串,並將其上傳到postgresql – 2013-04-30 15:24:29
編輯完成後。爲什麼不將數值作爲數字類型存儲在POSTGRES中,而不是字符串? – Shane 2013-04-30 15:39:38