Oppure

Loading
23/08/09 11:44
I)eathBringer
Stavo cercando di fare una calcolatrice simile a quella di Windows ma nn sono riuscito a capire come fa quest'ultima a usare numeri di enorme lunghezza (mi sembra 32 cifre). Credo che in VB.NET il tipo di numero che permette più cifre sia il Decimal ma comunque non raggiunge i livelli della calcolatrice di Windows. L'unica cosa che mi viene in mente è che sia stato creato un nuovo tipo di dati partendo, forse, da una stringa...
Qualcuno sa dirmi di più?
aaa
23/08/09 12:29
ruggy94
Quello che dici tu è possibile, ma è giusto precisare alcune cose. Ammettendo che tu abbia un PC a 32 bit, puoi operare via hardware con numeri la cui rappresentazione in binario non superi le 32 cifre. Per "oltrepassare" questo limite, puoi fare tutto il lavoro da software, ma ciò comporta una minore velocità d'esecuzione.
Uno dei tipi che potresti sfruttare è appunto lo String, ma dovresti definire per bene gli operatori e i vari metodi e funzioni.
Se ho detto qualcosa di sbagliato, correggetemi pure.
aaa
23/08/09 13:00
I)eathBringer
E' quello che è venuto in mente anche a me... non è che per caso qualcuno si è già preso la briga di implementare una classe che risponda alle mie esigenze:D?
aaa
23/08/09 13:09
ruggy94
Io no, purtroppo. Comunque sei sicuro che la calcolatrice di Windows lavori con molte cifre? A quanto ricordo io, in questi casi utilizza la notazione scientifica.
aaa
23/08/09 13:52
manvb.net
Per gli interi va benissimo Int64(32 cifre) mentre per i numeri a virgola mobile il decimal è ottimo(ha un'ottima precisione, chi te l'ha detto che non raggiunge i livelli della calcolatrice di Win?).


@Ruggy94:
La simulazione via sofware la fa già il framework, prendi l'Int64.
Ultima modifica effettuata da manvb.net 23/08/09 13:55
aaa
23/08/09 13:57
ruggy94
Postato originariamente da manvb.net:
La simulazione via sofware la fa già il framework, prendi l'Int64.

Si, hai ragione :D
aaa
23/08/09 18:03
I)eathBringer
Postato originariamente da manvb.net:

Per gli interi va benissimo Int64(32 cifre) mentre per i numeri a virgola mobile il decimal è ottimo(ha un'ottima precisione, chi te l'ha detto che non raggiunge i livelli della calcolatrice di Win?).



Non me l'ha detto nessuno... l'ho constatato da solo:
i decimal vanno da un valore massimo di 79228162514264337593543950335 a un minimo di -79228162514264337593543950335; se in vb.net provo a moltiplicare per 2 il numero 79228162514264337593543950335 mi dà un'eccezione mentre se lo faccio nella calcolatrice di windows è tutto ok, lo calcola senza problemi.
Ultima modifica effettuata da I)eathBringer 23/08/09 18:05
aaa
23/08/09 18:20
ruggy94
Ho provato la calcolatrice di Linux ed in effetti consente di rappresentare numeri lunghissimi. Dopo un certo limite, utilizza la notazione scientifica (quindi ad esempio 9,96804955e+127), ma comunque il limite è molto alto.
aaa