파이썬 3.52에서 float 유형에서 분수 유형으로 변환하는 주제에 대해 연습하면서 2 가지 다른 변환 방법의 차이점을 발견했습니다.파이썬에서 소수 변환으로 플로트
첫 번째 방법은 다음과 같습니다
>>> from fractions import Fraction
>>> x = 1232.23
>>> f = Fraction(*x.as_integer_ratio())
>>> print(f)
2709702426188841/2199023255552 #Answer
두 번째 방법은 다음과 같습니다
>>> from fractions import Fraction
>>> x = 1232.23
>>> f = Fraction(str(x))
>>> print(f)
123223/100 #Answer
나는이 두 가지 다른 대답 뒤에 이유를 알고 싶어? 죄송합니다. 어리석은 질문이라면 프로그래밍과 파이썬을 처음 접했습니다.
편집 :
>>> from fractions import Fraction
>>> x = 1232.23
>>> f = Fraction(*x.as_integer_ratio())
>>> f = f.limit_denominator(100)
>>> print(f)
123223/100
좀 더 정확한 대답처럼 보입니다. 이것이이 아나몰리의 이유일까요? '>>> 0.1 + 0.1 + 0.1-0.3' '5.551115123125783e-17' –
@AbdulHaseeb : 그 이유는 사실이 아닙니다. 왜냐하면 제가 설명했듯이,베이스에서 십진수를 반복하지 않고도 표현할 수있는 숫자는, 10은 base-2에있을 수있는 것과 다릅니다. –