Muszę porównać dwie liczby. Jedna z nich pochodzi z kodu Pythona i pochodzi od numpy. Debugger pokazuje, że mają tę samą wartość '29 .0 ', ale typ pierwszy to float
, a drugi to float64
, więc a == b
i a - b == 0
jest . Jak sobie z tym poradzić? Czy jest jakiś sposób, aby wymusić regularną zmienną Pythona na float64
lub numpy domyślnie używać float
?Porównaj `float` i` float64` w pytonie
Aktualizacja: Na końcu wszystkie te wartości pochodzą z tego samego pliku, w którym jest napisane 29.0
, więc nie sądzę, że istnieją różnice w wartościach numerycznych.
Zazwyczaj porównywanie dowolnych dwóch zmiennych o wartości "a == b" lub "a - b == 0" jest złym pomysłem ze względu na błędy precyzji. Spróbuj zrobić coś w stylu 'abs (a - b) <1e-8' lub coś podobnego. – wflynny
Reprezentacja zmiennoprzecinkowa i arytmetyczne nie są dokładne (mantisse i truncature pb). Ustaw epsilon maksymalnej różnicy (zwykle 10e-10). – lucasg
Podczas gdy te komentarze ogólnie mają rację, nie mogę sobie wyobrazić błędu precyzji w wartości "29.0", jeśli pochodzi on z pliku, który prawdopodobnie jest w formacie ASCII. 29,0 może być dokładnie odwzorowany. – glglgl