부동 소수점과 관련된 문제를 완전히 이해하고 있지만 설명 할 수없는 매우 흥미로운 동작을 보았습니다.부동 소수점의 부정확성 피하기
float x = 1028.25478;
long int y = 102825478;
float z = y/(float)100000.0;
printf("x = %f ", x);
printf("z = %f",z);
출력은 :
X = 1028.254761 Z = 지금 1028.254780
부동 숫자 I는 변수 x에 해당 할당 할 때 특정 랜덤 값 (1028.25478)을 나타내는 데 실패하면 . 변수 z의 경우 왜 동일하지 않습니까?
P. 나는 pellesC IDE를 사용하여 코드 (C11 컴파일러)를 테스트하고있다.
귀하의 코드 [내게 똑같은 것이 인쇄됩니다] (https://ideone.com/9zyYyF). – dasblinkenlight
예를 들어 몇 자루 더 인쇄하십시오. ' "% .10f"'. –
이것은 복제품이 아닙니다. 나는 몇 가지 실제 중복이 있다고 생각하지만, 찾기가 어렵다. 기본적으로 컴파일러는 두 번째 경우에 'double'으로 수학 연산을 수행합니다. – dasblinkenlight