은 값이 약간 수정 : 나는 np.float64
으로 숫자를 캐스팅 할 때np.float32가 매트릭스의 값을 약간 변경하는 이유는 무엇입니까? 내가 <code>np.float32</code>로 매트릭스의 숫자를 캐스팅 할 때
In [1]: matrix_32 = np.asarray([
...: [0.7, 3],
...: [1.7, 2],
...: [0.7, 9]
...: ], dtype=np.float32)
In [2]: matrix_32
Out[2]:
array([[ 0.69999999, 3. ],
[ 1.70000005, 2. ],
[ 0.69999999, 9. ]], dtype=float32)
이 값이 예상대로 표시됩니다 :
In [3]: matrix_64 = np.asarray([
...: [0.7, 3],
...: [1.7, 2],
...: [0.7, 9]
...: ], dtype=np.float64)
In [4]: matrix_64
Out[4]:
array([[ 0.7, 3. ],
[ 1.7, 2. ],
[ 0.7, 9. ]])
누군가가 수 이것이 일어나는 이유를 설명해주십시오.
부동 소수점 산술에 대한 소개를 읽어 보시기 바랍니다. https://en.wikipedia.org/wiki/Floating-point_arithmetic –
이 질문은 소개 된 부정확성뿐만 아니라'np.float32'와'np.float64'가 다른'__repr__'을 가지고있는 것처럼 보입니다 객체에 대한 구현. –
몇 가지 기본 부동 소수점 속성에 대한 지식으로 쉽게 대답 할 수있는 많은 부동 소수점 질문을 얻었지만 질문을 중복으로 표시하면 해당 질문이 정확한 중복임을 의미합니다. 답변을 제공하지 않고 광범위한 범주의 질문을 빗나가게하는 데 사용해서는 안됩니다. 이 질문은 [원래 의도 한 것] (https://stackoverflow.com/questions/588004/is-floating-point-math-broken)과 중복되지 않습니다. –