소프트웨어 gcc에서 long double형과 double형 차이 알아보기?
2020.02.11 05:02
#include <stdio.h>
int main(void)
{
int t;
long double a;
double b;
for (t=27; t<45; t++)
{
a = ((t-1350.0L)/83.0L)*((t-1350.0L)/83.0L);
printf(" ((%d-1350)/83)*((%d-1350)/83) = %25.20Lf\n", t, t, a);
b = ((t-1350.0)/83.0)*((t-1350.0)/83.0);
printf(" ((%d-1350)/83)*((%d-1350)/83) = %25.20f\n", t, t, b);
}
}
위의 프로그램을 컴파일하여 실행하면 아래와 같이 결과가 같은데 왜 그럴까요? long double형이 좀더 정확하게 출력되지 않네요?
choe@DESKTOP-KOP92G2:~$ gcc test5.c
choe@DESKTOP-KOP92G2:~$ ./a.out
((27-1350)/83)*((27-1350)/83) = 254.07591813035270433829
((27-1350)/83)*((27-1350)/83) = 254.07591813035270433829
((28-1350)/83)*((28-1350)/83) = 253.69197271011759653447
((28-1350)/83)*((28-1350)/83) = 253.69197271011759653447
((29-1350)/83)*((29-1350)/83) = 253.30831760778053762806
((29-1350)/83)*((29-1350)/83) = 253.30831760778053762806
((30-1350)/83)*((30-1350)/83) = 252.92495282334158446247
((30-1350)/83)*((30-1350)/83) = 252.92495282334158446247
((31-1350)/83)*((31-1350)/83) = 252.54187835680070861599
((31-1350)/83)*((31-1350)/83) = 252.54187835680070861599
((32-1350)/83)*((32-1350)/83) = 252.15909420815793851034
((32-1350)/83)*((32-1350)/83) = 252.15909420815793851034
((33-1350)/83)*((33-1350)/83) = 251.77660037741327414551
((33-1350)/83)*((33-1350)/83) = 251.77660037741327414551
((34-1350)/83)*((34-1350)/83) = 251.39439686456668709980
((34-1350)/83)*((34-1350)/83) = 251.39439686456668709980
((35-1350)/83)*((35-1350)/83) = 251.01248366961823421661
((35-1350)/83)*((35-1350)/83) = 251.01248366961823421661
((36-1350)/83)*((36-1350)/83) = 250.63086079256785865255
((36-1350)/83)*((36-1350)/83) = 250.63086079256785865255
((37-1350)/83)*((37-1350)/83) = 250.24952823341558882930
((37-1350)/83)*((37-1350)/83) = 250.24952823341558882930
((38-1350)/83)*((38-1350)/83) = 249.86848599216139632517
((38-1350)/83)*((38-1350)/83) = 249.86848599216139632517
((39-1350)/83)*((39-1350)/83) = 249.48773406880530956187
((39-1350)/83)*((39-1350)/83) = 249.48773406880530956187
((40-1350)/83)*((40-1350)/83) = 249.10727246334738538280
((40-1350)/83)*((40-1350)/83) = 249.10727246334738538280
((41-1350)/83)*((41-1350)/83) = 248.72710117578751010115
((41-1350)/83)*((41-1350)/83) = 248.72710117578751010115
((42-1350)/83)*((42-1350)/83) = 248.34722020612571213860
((42-1350)/83)*((42-1350)/83) = 248.34722020612571213860
((43-1350)/83)*((43-1350)/83) = 247.96762955436204833859
((43-1350)/83)*((43-1350)/83) = 247.96762955436204833859
((44-1350)/83)*((44-1350)/83) = 247.58832922049646185769
((44-1350)/83)*((44-1350)/83) = 247.58832922049646185769
choe@DESKTOP-KOP92G2:~$
댓글 [6]
-
익덕이 2020.02.11 13:02
-
나는나다 2020.02.11 14:07
gcc에서 long double형이 좀더 정밀도가 높습니다. 예를 들어 아래 프로그램 출력 결과는 long double형이 double형보다 좀더 정확하게 출력됩니다
#include <math.h>
#include <stdio.h>extern int main(){
const char *pi="3.14159265358979323846";
long double lpi;
double dpi;
float fpi;lpi = 4.0*atanl(1.0L);
dpi = 4.0*atan(1.0);
fpi = 4.0*atanf((float)1.0);
printf(" 12345678901234567890\n");
printf("pi = %25s\n", pi);
printf("lpi = %25.20Lf\n", lpi);
printf("dpi = %25.20f\n", dpi);
printf("fpi = %25.20f\n\n", fpi);}
-
메리아 2020.02.11 14:06 -
-
나는나다 2020.02.11 14:11
정확하다는 의미는 참값으로 출력되는 유효자리수의 개수가 더 많다는 의미로 말했던 것이었습니다. gcc에서 long double형의 정밀도가 double형보다 높은데 위의 경우에는 왜 두 자료형이 차이가 없는지 모르겠네요
-
메리아 2020.02.11 15:29 -
-
나는나다 2020.02.11 19:37
어라, 신기하네요. 말씀하신 사이트에서는 정말 다르네요. gcc 버전 차이는 아닌 것 같고... 알쏭달쏭하네요
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
82565 | 소프트웨어| adobe cc 다운로드 프로그램 [4] | 드림캐쳐 | 499 | 02-11 |
82564 | 윈 도 우| 바탕화면 우클릭-->새로만들기 [3] | 닥터정 | 589 | 02-11 |
» | 소프트웨어| gcc에서 long double형과 double형 차이 알아보기? [6] | 나는나다 | 290 | 02-11 |
82562 | 윈 도 우| 백신 추천 [16] | WB | 1156 | 02-11 |
82561 | 소프트웨어| 윈도우 새로 포맷시 크롬이나 웨일 통째로 백업하는법 있나요? [6] | 도전정신 | 639 | 02-11 |
82560 | 하드웨어| 하드 디스크 상태 한번 봐주세요 [2] | 줄넘기 | 333 | 02-11 |
82559 | 소프트웨어| 레인미터 날씨 스킨 질문드릴게요!! [6] | CuMaCu | 298 | 02-11 |
82558 | 소프트웨어| Realtek Audio Control 설치되는 리얼텍 오디오 드라이버 ... [3] | RoyalS | 851 | 02-11 |
82557 | 하드웨어| 노트북 nt560xbe-x58 모델 램 업글 관련 [2] | 다월드 | 586 | 02-10 |
82556 | 윈 도 우| pe빌더에 관한질문이요 [2] | 2002 | 211 | 02-10 |
82555 | 윈 도 우| 윈도우 PE에 소리나게 할려면 [2] | Paezaker | 258 | 02-10 |
82554 | 소프트웨어| 이거 바이러스인가요? [7] | brucex | 720 | 02-10 |
82553 | 윈 도 우| 마우스 커서가 기본값으로 변경되는 문제.. [2] | 뚜릅 | 201 | 02-10 |
82552 | 소프트웨어| office 2019에 onenote가 없네요? [7] | brucex | 687 | 02-10 |
82551 | 소프트웨어| Autodesk 2019버전 다운링크 좀 부탁드립니다. [4] | 11일의기적 | 499 | 02-10 |
82550 | 윈 도 우| 원도우10 중에 가장 안정적인 버전 추천 부탁합니다 [6] | syncLab | 1001 | 02-10 |
82549 | 윈 도 우| Winxpe22 PE 네트워크에러 | 사이버해결 | 231 | 02-10 |
82548 | 윈 도 우| 작업표시줄에 아이콘이 제대로 나오지 않습니다. [3] | 무서운우리 | 363 | 02-10 |
82547 | 윈 도 우| 내 컴퓨터를 클릭하고 들어가면 c 드라이버가 나타나지 않... [4] | SKorea | 386 | 02-10 |
82546 | 윈 도 우| 윈도우7 순정판 구하기가 너무 어렵네요. [3] | cline | 663 | 02-10 |
GCC에서..
long 과
long double 은
4바이트로 같습니다.
컴파일 호환성을 위해 정식 자료형이 아닌 long double 을 수용할 뿐입니다.