Venom9
20-10-2012, 17:46
Salve a tutti,
sto lavorando ad un progetto abbastanza complesso in cui ho bisogno di trasformare dei numeri decimali molto grandi in numeri in base 3.
Per fare ciò ho scritto una funzione che utilizza la funzione modulo.
Il problema è che se uso % oppure fmod, il programma non funziona per numeri più grandi di E24.
Voglio dire, il programma compila, ma se ad esempio faccio fmod(3e25,3), dovrebbe darmi resto 0, invece mi dà resto 1.
Ho provato allora a scrivere una funzione modulo utilizzando la definizione:
resto = dividendo - parte_intera(quoziente)*divisore;
Il problema però è ottenere la parte intera di un numero molto grande. Se faccio floor() oppure il casting con (long long int) non funziona con numeri maggiori di E24 (compila ma dà valori sbagliati).
Cosa posso fare?
Grazie a tutti.
nb: ho bisogno di lavorare con numeri che possono arrivare anche a E50
sto lavorando ad un progetto abbastanza complesso in cui ho bisogno di trasformare dei numeri decimali molto grandi in numeri in base 3.
Per fare ciò ho scritto una funzione che utilizza la funzione modulo.
Il problema è che se uso % oppure fmod, il programma non funziona per numeri più grandi di E24.
Voglio dire, il programma compila, ma se ad esempio faccio fmod(3e25,3), dovrebbe darmi resto 0, invece mi dà resto 1.
Ho provato allora a scrivere una funzione modulo utilizzando la definizione:
resto = dividendo - parte_intera(quoziente)*divisore;
Il problema però è ottenere la parte intera di un numero molto grande. Se faccio floor() oppure il casting con (long long int) non funziona con numeri maggiori di E24 (compila ma dà valori sbagliati).
Cosa posso fare?
Grazie a tutti.
nb: ho bisogno di lavorare con numeri che possono arrivare anche a E50