假設我可以查看浮點數,就好像它是某種類型的字典,其中的鍵範圍從-infinity到infinity,而值是這些地方的數字。也就是說,f [i]將返回最接近(f % 10**(i+1) - f % 10**i)/10**i
的整數。快速獲取浮點數字
例如,如果f=1234.5678
,f[-1] == 5
和f[2] == 2
。
此外:想象浮動也支持一些奇怪的圖像切片形式(即使它不是一個列表,就像它不是一個字典),所以在我們的例子f[-1:2] == 345
。
我需要這個實際的原因,我需要它很快完成。我想我可以根據我在第一段中寫的表達式(它返回一個浮點數,帶有浮點數的所有問題,我應該小心地轉換爲一個整數)來編寫一些笨拙的東西。
所以我想知道是否有一些簡單的,或者至少更優雅,快速溶液(性能是一個問題在這裏),不涉及庫,如decimal
。
可能值得一提的是,我沒有考慮模擬__getitem__
或切片符號的解決方案。功能def getslice(f, a, b)
是完美的。
你的公式聽起來像你已經完成了大部分工作。這裏沒有「快速」解決方案,因爲浮點數不是以數字表示,除非您先將它們格式化爲字符串。 –
我想一些聰明的字符串處理可能會完成這項工作,但我對於第四和第四次投擲的代價沒有任何想法,而且我不確定字符串解決方案可能會更快。 – Bach
另外,你是怎麼處理漂浮指數的?索引是相對於小數點始終還是浮點數?例如,什麼是-1.5e-10的迴歸? –