대부분, 그것은 당신을 속이고있어 NumPy와 배열의 repr
이다 (물론, 당신은 등 공식을 다시 구현할 것을 피하기 위해 자동적으로 분수의 계산을 처리하는 몇 가지 클래스가 필요).
당신의 예는 위의 고려 :
import numpy as np
x = float(1) - np.array([1e-10, 1e-5])
print x
print x[0]
print x[0] == 1.0
이 수율 :
[ 1. 0.99999 ]
0.99999999999
False
그래서 첫 번째 요소는 실제로 0이 아닌이 NumPy와 배열의 단지 예쁜 인쇄의 그런 식으로 보여주는 사용자들은 .
이
은 물론
numpy.set_printoptions
.
는, NumPy와는 fundementally 제한 정밀 수레를 사용하여 제어 할 수 있습니다. numpy의 전체적인 점은 유사한 데이터 배열을위한 메모리 효율적인 컨테이너가 될 것이므로 numpy에 decimal
클래스의 해당 항목이 없습니다.
그러나 64 비트 부동 소수점은 괜찮은 정밀도 범위를 가지고 있습니다. 1e-10과 1e-5는 너무 많은 문제를 일으키지 않습니다. 필요한 경우 numpy.float128
dtype도 있지만 네이티브 수레를 사용하는 것보다 작업이 훨씬 느립니다.
나는 1의 제곱에 작은 숫자를 올리면서 똑같은 문제를 겪고 있으며, 0으로 반올림하는 것을 가지고있다. – mike
당신이 downvote를 얻은 것은 ... 그것은 좋은 질문이다. –