double형의 최대 범위는?
글쓴이: 익명 사용자 / 작성시간: 금, 2002/07/12 - 1:36오후
안녕하셔요. 100의 팩토리얼을 구하는 프로그램을 만들다가 의문점이
있어서요. LINUX의 gcc 2.96버젼으로 팩토리얼 구하는 프로그램을
실행시키면 끝까지 정수로 출력이 되던데, 윈도우의 Visual C++로
똑같은 프로그램을 컴파일해서 실행시키면 아래와 같이 나오던데,
이유가 뭔가요? sizeof(double)로 했을 때 리눅스나 윈도우도
모두 8로 나오는건 마찮가지던데...
LINUX, gcc에서 결과값
94259477598383536739472739494---->계속 0이 아닌 정수로 나옴.
윈도의 Visual C++에서의 결과값
94259477598383536000000000000000->끝까지 0이 나옴.
Forums:
그건요.
double형을 계산할때 O.S에서 표현하는 double형의 민감도가 Window보다
Linux가 더 세밀하다는 뜻이죠...
그건 Unix계열에서도 항상 동일한 것은 아닙니다.
결론은 Linux만세입니다.
Re: 구해본 100 팩토리얼
음 오차가 심하네요.. 둘다,,
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의 범위를 훨씬 넘어 버리는데....
이렇게 자릿수가 큰 수는 어떻게 구하죠?
큰 수를 계산하는 라이브러리(클래스)를 만드시거나, 구해야 할텐데요.
좀 가르쳐주세요.
Re^3: 이렇게 큰 수는 어떻게 구하나요?
음... double형이 있긴 있죠.
대신 OS 나 기타 컴파일러마다 처리하는 한계가
다른거 같네요.
정확하게 하기 위해선 이중연결구조로 해결해야
할꺼 같기도 하고... 쩝~!
켁~! 1000! 은 어떻게?
1000! 은 어떻게 구했나요?
제가 만든걸로는 176!이상은 안되던데...
if(n < 1)
return n;
else
return n * fact(n - 1);
요걸로 하셨나요? 아니면 다른 알고리즘으로
하신건지...?? ㅡ,.ㅡ?
Re^3: 일전에 답글 단적 있는데,,,
http//kldp.org/script/bbs/read.php?table=qa2&no=4227
댓글 달기