Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Creazione variabili di grandezza a scelta
Forum - C/C++ - Creazione variabili di grandezza a scelta

Avatar
Dami91 (Ex-Member)
Newbie


Messaggi: 5
Iscritto: 25/09/2007

Segnala al moderatore
Postato alle 16:45
Giovedì, 11/10/2007
Salve a tutti! Ho fatto un prog k trova i numeri primi xò le variabili double perdono precisione e si arrotondano dopo i numeri dell'ordine di 10^15 e quindi nn riesco ad andare oltre questo limite nella "ricerca". Volevo kiedere se esiste un modo di creare variabili di "lunghezza" arbitraria, cioè dv sn io a decidere qual'è il limite max di calcolo. Qualcuno sa aiutarmi??? Thank

PM Quote
Avatar
WARRIOR (Ex-Member)
Guru


Messaggi: 627
Iscritto: 30/03/2007

Segnala al moderatore
Postato alle 19:14
Giovedì, 11/10/2007
Ad ogni tipo di variabile, viene riservato uno spazio in memoria e questo spazio non è arbitrario.
Non mi ricordo bene, però mi sembra che al massimo si possano memorizzare numeri di lunghezza doppia cioè con esponente ^15 (questione di bit ;)). (correggetemi se sbaglio)

PM Quote
Avatar
Dami91 (Ex-Member)
Newbie


Messaggi: 5
Iscritto: 25/09/2007

Segnala al moderatore
Postato alle 20:19
Giovedì, 11/10/2007
ma cm esitono i tipi standard d variabili ke occupano un certo numero di bit (mi sembra 32 nei long, 64 nei double) non esiste una qualke funzione ke mi permette di impostare la grandezza di un nuovo tipo di variabile, per esempio, a 256 o 512 bit o più???

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 20:30
Giovedì, 11/10/2007
no non c'è, nello standard almeno.
Potresti creare tu qualcosa che occupa tot bit in memoria e poi le operazioni le svolgi direttamente in binario, o senza inventarti tu qualcosa ti trovi una clase apposita che permette di memorizzare numeri infinitamente grandi, con unico limite computazionale spaziale la ram e temporale il tempo che ci mette il processore a calcolare le operazioni (più grande sarà il numero + tempo impiegherà)

Java ad esempio ha BigInteger nella core standard e se cerchi in internet ci sono dei porting per C++ di una classe simile, ne dovresti trovare una versione anche qui sul sito fatta da Zani88.

Nello standard C++ supporta i numeri complessi ma dovresti gestire proprio tu la parte reale e la parte immaginaria e non avendo mai studiato in matematica queste cose non saprei dirti come usarla e se può effetivamente esserti utile(ma indubbiamente è più comoda una classe stile BigInteger); per più info cmq cerca l'header complex

Ultima modifica effettuata da netarrow il 11/10/2007 alle 20:31
PM Quote
Avatar
Dami91 (Ex-Member)
Newbie


Messaggi: 5
Iscritto: 25/09/2007

Segnala al moderatore
Postato alle 14:31
Venerdì, 12/10/2007
OK grazie 1000! Bye Bye!

PM Quote