Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. 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)


Continuerò a correre, perchè ci sarà sempre qualcuno migliore di me.

Evvia i libri, evitate gli stolti che non li integrano nella loro vita.

http://www.mentisferiche.it

Luca Tedesco
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



Mai memorizzare quello che puoi comodamente trovare in un libro.
Imparare è un'esperienza; tutto il resto è solo informazione.
L'immaginazione è più importante della conoscenza.
(A. Einstein)


Esistendo poi google...
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