>> DAVID 마란 :의 지금 당신의 마음을 날려 보자.
그것은 나눈 실제 1 밝혀 (10)에 의해 1 / 10, 또는 0.1 참이다.
그러나 컴퓨터 만 유한이 그 비트 수있는과에
숫자를 표현, 당신은 항상 할 수 없습니다 와 1 / 10 같은 숫자를 표현
완벽한 정밀도.
즉, 컴퓨터는 가끔있을 판단 호출하지를 만들기 위해
반드시 숫자 당신을 나타냅니다 로 정확하게 의도 한대로 원하는.
>> 예를 들어, 내가로 돌아가 가정 이 프로그램에 0.1을 변경,
오, 0.28함으로써 나타내는 그 나는에의 printf의 printf 싶습니다
정밀도 28 곳.
의 지금 저장하고 프로그램을 컴파일하자 메이크 floats2이 시간.
점 슬래시 floats2로 실행합니다.
그리고 친애하는 하나님, 나는 0.1하지보기 시간, 하지만 사랑스러운 0.10000000,
좋은 지금까지.
하지만, 14,901,161,193,847,656,250.
>> 글쎄, 무슨 일이야?
음, 플로트가 밝혀 일반적으로 컴퓨터의 내부에 저장
32 비트.
32 분명히 한정된 수의, 인 만 표시 할 수 있음을 의미
32 비트 유한 수에게로 의 부동 소수점 값.
불행하게도, 그 의미 컴퓨터는 모든 가능한을 대표 할 수 없다
부동 소수점 숫자, 실수, 세계에 존재하는,
그것은 단지 많은 비트를 가지고 있기 때문에.
>> 그리고 컴퓨터가 분명히 무엇을의 이 경우 수행 1 / 10를하는 표현된다
가능한 가장 가까운 부동 소수점 값은 수있다.
하지만 우리가 보면, 우리가 여기로, 28 소수 자리는, 우리는 그것을보고 시작
부정확.
그래서이 문제입니다 완벽한 솔루션이 없습니다.
우리는 대신 부동의 두 배를 사용할 수 있습니다 로 64 비트를 사용하는 경향이있는
(32)에 반대했다.
하지만 물론, (64)는 또한 유한 그렇게 문제는 것
도 두배로 남아있다.