C언어 기초 질문입니다.

solomon100의 이미지

#include <stdio.h>

main() {

  float f_amount;

  double d_amount;

  f_amount = 123456750.12;

  d_amount = 123456750.12;

  printf(" Float type result = %f\n",f_amount);

  printf("Double type result = %lf\n",d_amount);

  }

------------------------------------------------------------------------
Float type result = 123456752.000000
Double type result = 123456750.120000

위의 프로그램의 경우 float값이 왜 123456752.000000이 된거지요? Double의 경우는 이해가 가는데 float의 경우는 영...
가수부(3바이트), 지수부(1바이트)이면 충분히 가능한거 아닌가요?

yasoo의 이미지

float 의 유효범위는 1.18*10**(-38) ~ 3.4*10**38

자리까지 입니다. 하지만 float 의 변수가 선언되었을때

메모리 내의 구조를 보면

31 30 23 22 0
┌─┬────┬───────────┐
S exp fraction

으로 되어있습니다.

따라서 지수부가 아닌 숫자부분에서의 유효부분은
8자리 만이 유효하게 됩니다.
그리고 부호부분때문에 정확한 숫자부분의 유효범위는
7자리가 되게 됩니다.

따라서 123456750.12 에서 앞쪽 유효범뒤인

1234567 까지가 유효범위가 되고 뒤에 5는 유효범위뒤의
가운데 숫자 이며 2부터는 임의의 숫자입니다.

VC++ 에서는 5부터 임의의 숫자가 나올수도 있습니다.

하지만 gcc 에서는 항상 유효부 다음자리에서는 5가 나오는것으로
알고있구요...

따라서 유효부분을 넘어가는 숫자이므로...

1234567******** 라고 출력이 되는것이고 소수점부분은

defalt 로 자리수만 채우는 것일뿐

유효부분이 아니기때문에 출력되지 않습니다.

(ㅎㅎ 제가 잘설명드린건지는 모르겠지만~ 많은도움 되셨으면 합니다.)

자세한 내용은 다음 링크를 참고하시길 바랍니다.

C언어의 변수 float와 double - Float Point 처리

Can You See 1% of chance??
So that is MY WAY !!!

solomon100의 이미지

자세한 답변 감사드립니다.^^ :D

yasoo의 이미지

저도 이거 보고 궁금해서...

직접 윈도우랑 리눅스에서 프로그래밍을 해보고..

변수를 다르게 비교해 보고했는데....

재미 있더라구요 ㅎ

다음에 또 뵈요 ^^

Can You See 1% of chance??
So that is MY WAY !!!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.