View Full Version : [C] Grandi numeri
Marinelli
22-05-2005, 22:20
Buonasera.
Ho bisogno di operare con numeri di grandi dimensioni, sia interi sia con la virgola. Diciamo una decina di cifre e quelli con la virgola anche con buona precisione (parecchie cifre dopo la virgola). Qualcuno saprebbe consigliarmi su quali tipi utilizzare e magari quali sono i formati (%x) da utilizzare con la printf per la stampa corretta di ciascun tipo?
Ciao e grazie :)
Buonasera.
Ho bisogno di operare con numeri di grandi dimensioni, sia interi sia con la virgola. Diciamo una decina di cifre e quelli con la virgola anche con buona precisione (parecchie cifre dopo la virgola). Qualcuno saprebbe consigliarmi su quali tipi utilizzare e magari quali sono i formati (%x) da utilizzare con la printf per la stampa corretta di ciascun tipo?
Ciao e grazie :)
Per quanto riguarda gli interi, se hai bisogno di soltanto dieci cifre, puoi usare i comunissimi int a 32 bit, che, come riportato dalla costante INT_MAX definita in limits.h, ha un valore massimo consentito di 2.147.483.647. Se non ti interessano i valori negativi, puoi rivolgerti all'unsigned int, che porta il limite a 2^32 - 1. Se ti servono valori piu' grandi puoi sare il long long int definito dallo standard ISO C 99 che altro non e' un intero a 64 bit (che, su cmpilatori C99 e architetture 32 bit viene comunque trattato come un 32 bit) che ha un raggio di azione nell'intorno (-2^63 - 1) e (2^63 - 1). Anche questo ha un tipo unsigned se non ti interessano i relativi, sempre definito dal C99, che spazia fino a 2^64 - 1.
Per quanto riguarda le cifre dicemali, il comunissimo float supporta fino a 6 cifre decimali, mentre il tipo double va da 1E-37 a 1E+37 in notazione scientifica, a 10 cifre decimali.
Per quanto riguarda il controllo della precisione stampabile con la printf(), puoi usare il comunissimo specificatore di precisione %x.yf , %x.ye oppure %x.yE dove x indica il numero di cifre intere e y indica la parte decimale per esempio:
printf("%5.3f\n", number);
stampera' una qualsasi cifra con 5 cifre intere e 3 decimali (ad es. 25436.564
Grazie per il feedback comunque. ;)
Marinelli
25-05-2005, 14:45
Cavolo, scusami... non so perché ero convinto di averti risposto e ringraziato! Forse l'ho pensato ma non l'ho fatto.
Ti ringrazio per la risposta ;)
Ciao :)
Cavolo, scusami... non so perché ero convinto di averti risposto e ringraziato! Forse l'ho pensato ma non l'ho fatto.
Ti ringrazio per la risposta ;)
Ciao :)
C'e' un errore di comunicazione, non e' che volevo essere ringraziato, ci mencherebbe! :sofico:
Volevo solo accertermi che non ti fosse sfuggito il thread :D
Marinelli
25-05-2005, 16:09
No, non preoccuparti... meriti di essere ringraziato, sei stato gentile a rispondermi in modo così completo :)
Ciao :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.