임의의 실수에서 소수점 이하 두자리수만 추출하여 정수형 변수에 대입하라. 예를 들어 사용자로부터 입력받은 실수 f가 12.3456이라면 34만 추출한다. 이때 반올림은 고려하지 않아도 상관없다. f가 달러 단위의 화폐 액수라고 할 때 센트 단위만 추출해내는 경우라고 생각하면 된다. 다음 ???? 자리에 적합한 연산식을 작성하는 문제이다.
<?xml:namespace prefix = o ns = \"urn:schemas-microsoft-com:office:office\" /><o:p></o:p>
printf(\"실수를 입력하시오 : \");
scanf(\"%f\",&f);
i=????
printf(\"i=%d\\n\",i);
<o:p></o:p>
이 문제의 핵심은 음수이거나 소수점 이하의 자리수가 없는 경우까지 잘 고려하여 항상 잘 동작하는 코드를 만드는 것이다.
#include <stdio.h>
void main(void)
{
double Rnumber;
int i;
scanf(\"%lf\", &Rnumber);
i = (Rnumber - (int)Rnumber)*100;
printf(\"%d\\n\", i);
}
소스를 이렇게 짰는데 음수일때 예를 들어 -30.39를 치면 왜 -39가 아니라 -38이 나올까요?
http://codepad.org/M0ecwKNP
-39 나오는데.
아마 부동소수점 오차문제일거임
걍 sprintf 해서 . 찾아서 하면 안대?