我有在Python含有浮點數(例如num = 24654.123
)的變量,並且我想確定的數量的精度和標度值(在Oracle感),所以123.45678應該給我(8,5),12.76應該給我(4,2)等。確定精度和特定數目的比例在Python
我首先想到使用字符串表示法(通過str
或repr
),但那些失敗的大數字(雖然我現在瞭解浮點數表示法的侷限性是這裏的問題):
>>> num = 1234567890.0987654321
>>> str(num) = 1234567890.1
>>> repr(num) = 1234567890.0987654
編輯:
好以下要點。我應該澄清。這個數字已經是一個浮點數,正在通過cx_Oracle被推送到數據庫。我試圖盡我所能在Python中處理對於相應的數據庫類型來說太大的浮點數,因爲執行INSERT和處理Oracle錯誤的數據庫類型太大(因爲我想處理數字字段而不是記錄,一次)。我猜map(len, repr(num).split('.'))
是最接近浮點的精度和比例嗎?
哇,謝謝!看起來應該這樣做。 – jrdioko 2010-06-11 17:02:05
出於好奇,數字14從哪裏來?它與平臺無關嗎? – jrdioko 2010-06-11 18:09:53
它依賴於平臺,但大多數平臺將使用IEEE-754。 http://en.wikipedia.org/wiki/Double_precision_floating-point_format#Double_precision_binary_floating-point_format我大概可以做到15,但我想保守一點,並確保我的四捨五入正常工作。 – 2010-06-11 18:21:48