double형의 최대 범위는?

익명 사용자의 이미지

안녕하셔요. 100의 팩토리얼을 구하는 프로그램을 만들다가 의문점이

있어서요. LINUX의 gcc 2.96버젼으로 팩토리얼 구하는 프로그램을

실행시키면 끝까지 정수로 출력이 되던데, 윈도우의 Visual C++로

똑같은 프로그램을 컴파일해서 실행시키면 아래와 같이 나오던데,

이유가 뭔가요? sizeof(double)로 했을 때 리눅스나 윈도우도

모두 8로 나오는건 마찮가지던데...

LINUX, gcc에서 결과값
94259477598383536739472739494---->계속 0이 아닌 정수로 나옴.

윈도의 Visual C++에서의 결과값
94259477598383536000000000000000->끝까지 0이 나옴.

익명 사용자의 이미지

double형을 계산할때 O.S에서 표현하는 double형의 민감도가 Window보다
Linux가 더 세밀하다는 뜻이죠...

그건 Unix계열에서도 항상 동일한 것은 아닙니다.

결론은 Linux만세입니다.

익명 사용자의 이미지

음 오차가 심하네요.. 둘다,,
100 팩토리얼 구해 보니까 이렇게 나왔거든요

933262154439441526816992388562667004907159682643816214685\
92963895217599993229915608941463976156518286253697920827223758251185\
210916864000000000000000000000000

이건 1000 팩토리얼 ^^;
40238726007709377354370243392300398\
57193748642107146325437999104299385123986290205920442084869694048004\
79988610197196058631666872994808558901323829669944590997424504087073\
75991882362772718873251977950595099527612087497546249704360141827809\
46464962910563938874378864873371191810458257836478499770124766328898\
35955735432513185323958463075557409114262417474349347553428646576611\
66779739666882029120737914385371958824980812686783837455973174613608\
53795345242215865932019280908782973084313928444032812315586110369768\
01357304216168747609675871348312025478589320767169132448426236131412\
50878020800026168315102734182797770478463586817016436502415369139828\
12648102130927612448963599287051149649754199093422215668325720808213\
33186116811553615836546984046708975602900950537616475847728421889679\
64624494516076535340819890138544248798495995331910172335555660213945\
03997362807501378376153071277619268490343526252000158885351473316117\
02103968175921510907788019393178114194545257223865541461062892187960\
22383897147608850627686296714667469756291123408243920816015378088989\
39645182632436716167621791689097799119037540312746222899880051954444\
14282012187361745992642956581746628302955570299024324153181617210465\
83203678690611726015878352075151628422554026517048330422614397428693\
30616908979684825901254583271682264580665267699586526822728070757813\
91858178889652208164348344825993266043367660176999612831860788386150\
27946595513115655203609398818061213855860030143569452722420634463179\
74605946825731037900840244324384656572450144028218852524709351906209\
29023136493273497565513958720559654228749774011413346962715422845862\
37738753823048386568897646192738381490014076731044664025989949022222\
17659043399018860185665264850617997023561938970178600408118897299183\
11021171229845901641921068884387121855646124960798722908519296819372\
38864261483965738229112312502418664935314397013742853192664987533721\
89406942814341185201580141233448280150513996942901534830776445690990\
73152433278288269864602789864321139083506217095002597389863554277196\
74282224875758676575234422020757363056949882508796892816275384886339\
69099598262809561214509948717012445164612603790293091208890869420285\
10640182154399457156805941872748998094254742173582401063677404595741\
78516082923013535808184009699637252423056085590370062427124341690900\
41536901059339838357779394109700277534720000000000000000000000000000\
00000000000000000000000000000000000000000000000000000000000000000000\
00000000000000000000000000000000000000000000000000000000000000000000\
00000000000000000000000000000000000000000000000000000000000000000000\
00000000000000000

익명 사용자의 이미지

100! 만해도 long의 범위를 훨씬 넘어 버리는데....
이렇게 자릿수가 큰 수는 어떻게 구하죠?

큰 수를 계산하는 라이브러리(클래스)를 만드시거나, 구해야 할텐데요.

좀 가르쳐주세요.

익명 사용자의 이미지

음... double형이 있긴 있죠.

대신 OS 나 기타 컴파일러마다 처리하는 한계가

다른거 같네요.

정확하게 하기 위해선 이중연결구조로 해결해야

할꺼 같기도 하고... 쩝~!

익명 사용자의 이미지

1000! 은 어떻게 구했나요?

제가 만든걸로는 176!이상은 안되던데...

if(n < 1)
return n;
else
return n * fact(n - 1);

요걸로 하셨나요? 아니면 다른 알고리즘으로

하신건지...?? ㅡ,.ㅡ?

익명 사용자의 이미지

http//kldp.org/script/bbs/read.php?table=qa2&no=4227

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.