정수 N을 먼저 읽는 간단한 프로그램을 만들려고합니다. 그 다음에는 N 개의 float 데이터를 읽고 두 자리 숫자의 화면에 다시 놓습니다. 소수점. 그것은 매우 간단합니다. 그러나 그것은 잘못되었다! 다음은 소스 코드입니다.float 값을 읽는 중 오류가 발생했습니다.
#include<cstdio>
int main()
{
float d;
int n;
scanf("%d",&n);
while(n>0)
{
n--;
scanf("%f",&d);
printf("%.2f\n",d);
}
return 0;
}
작은 값 (예 : 3.1 또는 1.0)을 입력하면 매우 잘 동작합니다. 그러나 -765057.71이나 978715.10과 같은 큰 값을 주면 다른 값을 출력합니다. -765057.71부터 -765057.69를 인쇄하고 다음 인쇄에서는 978715.13을 인쇄합니다. 왜 이런 일이 일어나고 있으며 어떻게 해결할 수 있습니까?