Ragionando su un problema di overflow,ad esempio sommando due valori con segni concordi ,secondi voi come posso fare ad evitarlo,facendo la somma modulo il massimo rappresentabile?
Ragionando su un problema di overflow,ad esempio sommando due valori con segni concordi ,secondi voi come posso fare ad evitarlo,facendo la somma modulo il massimo rappresentabile?
Non ho capito il problema, ovvero lo scopo della domanda ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
se ho capito quello che chiedi e come lo vuoi risolvere praticamente non hai fatto niente, l'overflow rimane perchè sommando i valori vai in overflow, rinumenando quindi da capo, quindi un numero inferiore alla soglia massima. Facendone il modulo non ottieni altro che quel numero stesso.
si matrics ,hai afferrato il problema,allora cosa mi consigliate?
Ho paura che non ci siano molte soluzioni, forse cambiare il modo di rappresentare il numero, magari in forma esponenziale, non mi vengono idee migliori.Originariamente inviato da gabama
si matrics ,hai afferrato il problema,allora cosa mi consigliate?
Nemmeno io ho capito molto quale sia il problema... facciamo un esempio pratico, che si spiega più di mille parole:
Dati A, B e MAX, rispettivamente:
A -> il prmio addendo
B -> il secondo addendo
MAX -> il valore massimo rappresentabile (valore soglia di overflow)
tali che
(A + B) > MAX
Cosa vuoi ottenere dalla somma (A + B)?
Ciao.
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Vuole assicurarsi che la somma di questi due numeri non vada in overflow, cioè che non superi il massimo valore rappresentabile.
Potresti lasciare il primo intero così com'è e sommarlo a (secondo_intero%(MAX_INT-primo_intero))... ma comunque otterresti una somma "falsata", e non riesco a cogliere l'utilità della cosa...
every day above ground is a good one
ragazzi ,grazie a tutti per l' immediato interessamento,il mio problema è di gestire il caso in cui si presenti l' overflow,(il linguaggio è sempre ijvm),ma mi sembra di capire che è come pensavo e non esistono reali condizioni di miglioramento,voi non avete altre idee.....?
Grazie ancora
mmm, se vuoi sapere se si verificherà un overflow potresti inserire in una variabile il valore massimo del tipo che stai utilizzando, e detrarre il primo addendo dopo di che verificare se il secondo addendo è maggiore della precedente sottrazione: nel caso via sia un responso positivo significa che la somma andrebbe in overflow
PS: mi pare di capire che stai lavorando in java, cosa che avresti dovuto specificare, perché essendo una VM, se non erro, mette a disposizione la possibilità di usare dei Try/Catch per gli overflow
http://www.java2s.com/Code/VB/Langua...utchecking.htm
VM su SSD da 5$! https://www.digitalocean.com/?refcode=f6925c7f0ddb
Continuo a non capire l'utilità del problema, che non ho mai incontrato ...
Se c'e' un errore di overflow lo rilevi a posteriori quando si verifica e operi di conseguenza ... certe volte si inventano problemi dove non ci sono ...
No MP tecnici (non rispondo nemmeno!), usa il forum.