Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Operatori necunoscuti  (Citit de 1226 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
TwistedFaith
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« : Ianuarie 29, 2013, 10:04:19 »

Am vazut si am inceput sa folosesc LL dupa un anumit numar pt a-l converti la tipul long long, dar acesta merge si cand numarul are 62 de cifre. Cu cat sunt mai multe cifre cu atat numarul creste in valoare (numar de 19 cife, maximul nr. de cifre pt tipul long long).

Ex: Pt #define PInfinit 20000000000000000000000000000000000000000000000000000000000000LL
cout<<PInfinit; este 4611686018427387904


Am mai vazut in alte carti PInfinit2 (Plus Infinit) declarat ca "1.e20". Cand afisezi acest numar rezultatul este "1e+020". Care este logica?


PInfinit < PInfinit2
Memorat
repp4radu
Nu mai tace
*****

Karma: 118
Deconectat Deconectat

Mesaje: 204



Vezi Profilul
« Răspunde #1 : Februarie 02, 2013, 14:28:01 »

Desi merge sa pui LL dupa un numar care depaseste valoare LL, acesta nu va putea fi stocat intr-o variabila de tip long long din motive evidente.
Nici daca declari un int si ii dai valoare 10000000000000 nu vei lua eroare de compilare, dar nici nu vei avea valoarea dorita in variabila.

Declararea ca 1e20 inseamna 10^20.
Daca vrei sa ti se afiseze in mod uzual si nu in format stiintific, este ok sa scrii cout<<fixed<<INF;

Pentru a folosi fixed trebuie sa incluzi header-ul iomanip.
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #2 : Februarie 02, 2013, 16:31:25 »

Btw, daca chiar vrei 1e20 sa ti se afiseze. foloseste asa :
Cod:
# define PInfinit 20000000000000000000000000000000000000000000000000000000000000.0
# define PInfinit 2e10 // tot aia
Acum PInfinit va fi de tip real (double de preferat), si ti se afisa corespunzator. Daca vrei numar mai mare, si precizie mai mare (nu e cazul aici), pui dupa .0 un L, nu LL ca la long long, doar un L de la Long double.
Cod:
# define PInfinit 20000000000000000000000000000000000000000000000000000000000000.0L
# define PInfinit 2e10L // ca mai sus, doar cu L-ul aferent
« Ultima modificare: Februarie 02, 2013, 16:44:44 de către Simoiu Robert » Memorat
repp4radu
Nu mai tace
*****

Karma: 118
Deconectat Deconectat

Mesaje: 204



Vezi Profilul
« Răspunde #3 : Februarie 02, 2013, 16:42:03 »

@Simoiu Robert: Daca faci declararea cu e cum ai zis tu, in PInfinit vei avea valoarea 2 * 10^(-10) ceea ce tinde la 0, nu la infinit. Corect e fara acel -.
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #4 : Februarie 02, 2013, 16:44:39 »

Scuze, eu ma gandeam la epsilon Smile).
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines