누군가가 아래 코드가 왜 그렇게 행동하는지 설명해 주실 수 있습니까? (Windows 7 x64의 명령 줄에있는 Python입니다.)Python odd operation?
>>>2.22 + 0.22
2.44000000000000004
>>>(222+22)/100
2.44
누군가가 아래 코드가 왜 그렇게 행동하는지 설명해 주실 수 있습니까? (Windows 7 x64의 명령 줄에있는 Python입니다.)Python odd operation?
>>>2.22 + 0.22
2.44000000000000004
>>>(222+22)/100
2.44
모든 부동 소수점 연산은 IEEE 표준을 기반으로합니다.
부동 소수점 연산은 오류를 일으키는 것으로 알려져 있습니다.
http://en.wikipedia.org/wiki/IEEE_floating_point
사용 the decimal
module 당신이 정확한 계산을합니다.
downvote하지만 의견이 없습니다. , 어떻게 개선 할 수 있습니까? – Kos
부동 소수점 연산은 퍼 케이션에 제한이 있으며, 파이썬에서는 한계가 잘 설명되어 있습니다. 그것에 대해 읽을 수 있습니다 here
이것은 데이터 형식 때문입니다. 당신이 추가
2.22 + 0.22 != 2.44 // both are float
// when you use them to calculate, they are giving consistently "wrong" results
// because the datatype in itself gets incorrect when moving into deep comma space
(222+22)/100 // becomes this in calculation
222+22 = 244 --> 244/100 = 2.44
숫자는 플로트 형식으로되어 있습니다. 즉, 소수 자릿수가 있음을 의미합니다. 숫자의 두 번째 줄은 모두 정수이므로 정수 형식입니다. Float 형식은 수학 방정식을 수행하는 동안 오류를 발생시키는 것으로 알려져 있습니다.
[모든 부동 소수점 연산에 대해 알아야 할 모든 컴퓨터 과학자] (http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) –