PDA

View Full Version : i double in Java e C++


dupa
15-12-2005, 13:54
Sto scrivendo un applicazione in Java (della quale c'e' anche una versione C++).

Mi sono imbatutto in un problema, visto che devo fare calcoli piuttosto complessi, roba del tipo 200 elevato alla 100 o cose di questo tipo che in Java mi sfondano il limite massimo per i "double".

Per evitare di dover riscrivere un mucchio di codice, mi potete consigliare con quale tipo sostituire i double in quella funzione, nel modo il piu' possibile indolore?

Poi, da quel che ho trovato su google, mi pare che in java non esiste il "long double", sapete se invece esiste in C++? e magari avete mica un buon link da consigliarmi x vedere i range disponibili per questi formati nei vari linguaggi?

Vi ringrazio.

rdefalco
15-12-2005, 14:05
Guardati la classe BigDecimal e vedi se fa per te
http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigDecimal.html

EDIT: prima avevo scritto una cazzata :doh:

shinya
15-12-2005, 19:06
Se devi fare calcoli con numeri di lunghezza arbitraria, è meglio che tu ti diriga verso una libreria già fatta. Ce ne sono moltissime, dai un'occhiata su google cercando qualcosa tipo "arbitrary precision library java" o qualcosa di simile.
Altrimenti puoi scrivertela tu. L'approccio utilizzato solitamente, almeno, io in c++ faccio così, è di memorizzare il numero in una stringa. Poi per fare le operazioni puoi scrivere un algoritmo che ricalchi quello che facevi alle elementari quando mettevi i numeri in colonna e sommavi cifra per cifra, aggiungendo il riporto se ce n'era bisogno. Questo per l'addizione. Per la moltiplicazione esistono metodi numerici più efficenti, come l'algoritmo di karatsuba o come si scrive...
Io cercherei una libreria già pronta :)

rdefalco
15-12-2005, 19:44
Credo che BigDecimal (fornito di serie con la libreria matematica di Java) sia esattamente una classe già pronta per gestire numeri in virgola mobile con precisione arbitraria limitata superiormente dal solo spazio di memoria disponibile