2012-11-07 3 views
1

누군가가 아래 코드가 왜 그렇게 행동하는지 설명해 주실 수 있습니까? (Windows 7 x64의 명령 줄에있는 Python입니다.)Python odd operation?

>>>2.22 + 0.22 
2.44000000000000004 
>>>(222+22)/100 
2.44 
+5

[모든 부동 소수점 연산에 대해 알아야 할 모든 컴퓨터 과학자] (http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) –

답변

3

모든 부동 소수점 연산은 IEEE 표준을 기반으로합니다.

5

부동 소수점 연산은 퍼 케이션에 제한이 있으며, 파이썬에서는 한계가 잘 설명되어 있습니다. 그것에 대해 읽을 수 있습니다 here

1

이것은 데이터 형식 때문입니다. 당신이 추가

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 
0

숫자는 플로트 형식으로되어 있습니다. 즉, 소수 자릿수가 있음을 의미합니다. 숫자의 두 번째 줄은 모두 정수이므로 정수 형식입니다. Float 형식은 수학 방정식을 수행하는 동안 오류를 발생시키는 것으로 알려져 있습니다.