Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    760

    Algoritmo per evitare overflow

    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?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Non ho capito il problema, ovvero lo scopo della domanda ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502
    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.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    760
    si matrics ,hai afferrato il problema,allora cosa mi consigliate?

  5. #5
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502
    Originariamente inviato da gabama
    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.

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    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

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    760
    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

  9. #9
    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

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.