• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Typy zmiennych C++

Object Storage Arubacloud
0 głosów
1,138 wizyt
pytanie zadane 7 września 2017 w C i C++ przez qlucha Obywatel (1,790 p.)

Zastanawiają mnie pewne dane które znalazłem w jednym z kursów cpp, które określają "Zakres Wartości" dla zmiennych. 

http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Pojecie-zmiennej-i-podstawowe-typy-danych/11

Jest tam zapis : dla zmiennej long double  :

long double 8 1.7E +/- 308 (15 cyfr)

Ale w jednym z odcinków programowania pana M.Zelenta program wyznacza max liczbę dla tej zmiennej w postaci 9.28565e+4831  w zapise naukowym . 

Z tych zapisów wnioskuję ,że maksymalną liczbę jaką moge wyznaczyć z podanej tabeli dla zmiennej long double jest liczba z ilościa 309 cyfr maksymalnie ,(nie chodzi mi o to jaką wartość reprezentuje ta liczba ale  z ilu cyfr max składa sie ta liczba ).

Natomiast program wyznacza liczbę  9.2e +4831 , czyli składa się ona z max 4832 cyfr i pozniej przekroczymy zakres zmiennej i program się wysypie. 

Czy ja coś zle zrozumiałem ??? Proszę o pomoc i wyrozumiałość w tym temacie , dzieki. 

 

 

 

1 odpowiedź

+1 głos
odpowiedź 7 września 2017 przez niezalogowany
wybrane 8 września 2017 przez qlucha
 
Najlepsza

Cytując ze strony którą podałeś:

Powyższe rozmiary danych są podane dla 32-bitowego kompilatora Visual C++. Jeśli chcesz sprawdzić ile w rzeczywistości zajmuje określony typ danych dla Twojego kompilatora, wystarczy napisać prosty program i wykorzystać w nim słowo kluczowe sizeof. Przykładowo, dla kompilatora GNU g++ rozmiar typu long double wynosi 12 bajtów, a nie 8 bajtów jak w Visual C++. 

Maksymalna wartość jaką może pomieścić long double jest zależna od kompilatora. Dla domyślnego kompilatora Visual Studio jest to 1.7E +/- 308 (15 cyfr). Dokładnie to samo co dla double. Na innym kompilatorze long double może mieć rozmiar 12 bajtów (patrz w googlu long double 80-bit) i wtedy pomieści znacznie większe liczby: 

Zakres ±1,1 × 10^4932 Precyzja 19...20cyfr
komentarz 8 września 2017 przez qlucha Obywatel (1,790 p.)

Dzieki za odpowiedz,  sprawdzałem prostym programem  ile bajtów rezerwuje u mnie zmienna long double i jest to 12 bajtów, i pracuje na kompilatorze GNU g++ .

Pytam dlatego aby zrozumiem to raz a dobrze, ponieważ w kursie na jednym z odcinków Pan M.Zelent podaje wzór do obliczenia z którego wynika jaką maksymalną liczbę możemy przypisać do danej zmiennej dziesiętnie i jest to prosty wzór:

-2^(n-1).....2^(n-1)-1             n-bit 

 i dla int wzór jest poprawny ale już dla long double wychodzi błędny wyniki i założenie .blush

komentarz 8 września 2017 przez niezalogowany
Tylko wiesz ten wzór to raczej podchodzi tylko pod typy całkowitoliczbowe, bo zmiennoprzecinkowe rządzą się innymi prawami (inne zarządzanie bitami - podstawa, wykładnik, mantysa itd.).
komentarz 8 września 2017 przez niezalogowany

Dla nich jest taka zależność.

komentarz 8 września 2017 przez qlucha Obywatel (1,790 p.)

tez własnie o tym pomyslałem ale musiałem się upewnić , że ten wzór odnosi cie do zmiennych przechowujących liczby całkowite  a  zmiennoprzecinkowe rządzą się innymi prawami .

Teraz już wiem na 100% i dzięki za pomoc ,  właśnie trafiłem na polską strone opisującą ten problem 2 minuty wcześniej czytałem angielską stronę , trudno trafić samemu na dobre materiały o programowaniu dlatego pytam tutaj , bo wiem ,że tutaj skupiają się ludzie którzy potrafią naprawde programować a ja wiem ,że jestem amatorem .smiley.

 

Jeszcze jedna rzecz która mnie ciekawi ze strony 

http://eduinf.waw.pl/inf/alg/006_bin/0027.php

long double 80b - 10B          Zakres ±1,1 × 104932         Precyzja 19...20cyfr

 

natomiast u mnie long double rezerwuje 12B a zakres sie nie zwieksza tylko jest taki sam jak dla 10B , obawiam się ,że zostane zrugany za to pytanie ale musiałem je zadać ,żeby wiedzieć gdzie kopać i czego się nauczyć . Dzieki za odpowiedz , 

 

komentarz 8 września 2017 przez niezalogowany
Nawet z tej strony brałem tabelkę - mogłem też wkleić link, ale widzę poradziłeś sobie ;)
komentarz 8 września 2017 przez qlucha Obywatel (1,790 p.)

smileyyes  dzieki za pomoc.

Podobne pytania

0 głosów
3 odpowiedzi 758 wizyt
pytanie zadane 22 stycznia 2017 w C i C++ przez Marchewka900 Bywalec (2,970 p.)
0 głosów
1 odpowiedź 1,494 wizyt
pytanie zadane 8 listopada 2016 w Java przez itcloud Gaduła (3,380 p.)
0 głosów
1 odpowiedź 299 wizyt
pytanie zadane 23 maja 2018 w C i C++ przez Agnes Użytkownik (990 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...