所以我有兩個浮動元組的列表每個。每個元組代表一個範圍。我正在通過另一個浮點數列表來表示適合範圍的值。所有這些花車都是< 1,但是積極的,所以精確的問題。我的一個測試,以確定一個值是否適合一個範圍是失敗,當它通過。如果我打印的價值,並引起問題的範圍內,我可以多說的:浮動內部元組訪問時更改值
curValue = 0.00145000000671
range = (0.0014500000067055225, 0.0020968749796738849)
發生故障的條件是:
if curValue > range[0] and ... blah :
# do some stuff
由curValue和範圍,測試給出的值應該明確地通過(不要擔心有條件的內容)。現在,如果我明確地打印範圍[0]的值是什麼,我得到:
range[0] = 0.00145000000671
這將解釋爲什麼測試失敗。所以我的問題是,爲什麼浮點數在訪問時會發生變化。當元組的一部分存在時,它具有達到一定精確度的十進制值,並且在訪問時具有不同的精度。爲什麼會這樣?我能做些什麼來確保我的數據在我的計算中保持一致的精度?
確定'0.00145000000671'或'0.0014500000067055225'可以完全按照您的預期表示? –
@Graham你能提供一個5行示例程序來展示問題嗎?如果沒有,問題可能出現在你的代碼中;) – phihag
curValue> range [0]在我的機器上返回True ...條件我們不應該擔心看起來像你的問題......或者它實際上是在做「東西「,你只是沒有意識到它 – Gerrat