0
這是我的字典:Python的怪異減法結果
weights = {
71.03711 : "A",
156.10111 : "R",
114.04293 : "N",
115.02694 : "D",
103.00919 : "C",
129.04259 : "E",
128.05858 : "Q",
57.02146 : "G",
137.05891 : "H",
113.08406 : "I",
128.09496 : "K",
131.04049 : "M",
147.06841 : "F",
97.05276 : "P",
87.03203 : "S",
101.04768 : "T",
186.07931 : "W",
163.06333 : "Y",
99.06841 : "V",
}
現在我做一個計算:
a = (129.08346 - 15.99940) # a = 113.08406 = "I" (in dictionary)
然後:
sequence += weights[a]
錯誤:
Traceback (most recent call last):
File "task2.py", line 43, in <module>
sequence += weights[a]
KeyError: 113.08406000000001
他爲什麼附加1? :(我需要的價值113.08406
而使用Python的最大[浮點精度的可能重複() ](http://stackoverflow.com/questions/5701317/floating-point-precision-while-using-pythons-max) – vaultah
這是一個浮點精度問題,我敢肯定有很多愚蠢的...基本上,問題是浮動寶詮釋數字造成不好的字典鍵,因爲很難從計算得到完全正確的浮點數。 – mgilson
浮點運算不是很精確。只能存儲很多浮點值,並且如果你的減法沒有精確地打到一個值,那麼將採用最接近的值。而不是使用浮動字典鍵,嘗試乘以100000給整數鍵,這不會有這個問題。 – qaphla