CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 9mm con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 14 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 35 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 8 su 8
Discussione:

0.3-0.1=0.1999999....

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Senior Droid L'avatar di cavaz


    Registrato dal
    Sep 2009
    Località
    Verona
    Messaggi
    306
    Smartphone
    Galaxy S4 I9505

    Ringraziamenti
    13
    Ringraziato 41 volte in 25 Posts
    Predefinito

    0.3-0.1=0.1999999....

    Risalve a tutti Androidiani!

    Sono nuovamente qua a proporvi uno dei miei strani problemi. e sinceramente non so neanche se possa stare veramente in questa sezione (non sapevo dove altro postare).
    Ho quasi completato la programmazione di una semplice calcolatrice. Come da titolo, se eseguo l'operazione 0.3-0.1 ottengo come risultato 0.199999...e 0.4-0.1=0.30000000....

    Qualcuno sa darmi una spiegazione del perché accade ciò? Non chiedo la risoluzione del problema, ma il perché questo accade.

    Grazie in anticipo a tutti!

  2.  
  3. #2
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Quote Originariamente inviato da cavaz Visualizza il messaggio
    Risalve a tutti Androidiani!

    Sono nuovamente qua a proporvi uno dei miei strani problemi. e sinceramente non so neanche se possa stare veramente in questa sezione (non sapevo dove altro postare).
    Ho quasi completato la programmazione di una semplice calcolatrice. Come da titolo, se eseguo l'operazione 0.3-0.1 ottengo come risultato 0.199999...e 0.4-0.1=0.30000000....

    Qualcuno sa darmi una spiegazione del perché accade ciò? Non chiedo la risoluzione del problema, ma il perché questo accade.

    Grazie in anticipo a tutti!
    Ciao,
    se te ne tiene, la risposta arriva da uno standard IEEE, ed è qui: What Every Computer Scientist Should Know About Floating-Point Arithmetic
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  4. #3
    Senior Droid L'avatar di cavaz


    Registrato dal
    Sep 2009
    Località
    Verona
    Messaggi
    306
    Smartphone
    Galaxy S4 I9505

    Ringraziamenti
    13
    Ringraziato 41 volte in 25 Posts
    Predefinito

    Quote Originariamente inviato da frank17next Visualizza il messaggio
    Ciao,
    se te ne tiene, la risposta arriva da uno standard IEEE, ed è qui: What Every Computer Scientist Should Know About Floating-Point Arithmetic
    Anteponendo il fatto che sono abbastanza stanco, mi sembra di aver capito che il problema sorge dal fatto che lo 0.1 me lo considera in base Binaria e non Decimale; di conseguenza in base binaria non risulta essere precisamente 0.1, giusto?

  5. #4
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Quote Originariamente inviato da cavaz Visualizza il messaggio
    Anteponendo il fatto che sono abbastanza stanco, mi sembra di aver capito che il problema sorge dal fatto che lo 0.1 me lo considera in base Binaria e non Decimale; di conseguenza in base binaria non risulta essere precisamente 0.1, giusto?
    Direi di si... purtroppo anche io non ho molte forze a quest'ora per scansionare quel documento... cmq si, è un effetto di quel modo di gestire l'aritmetica negli elaboratori a base macchina di turing
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  6. Il seguente Utente ha ringraziato frank17next per il post:

    cavaz (29-03-12)

  7. #5
    Senior Droid L'avatar di cavaz


    Registrato dal
    Sep 2009
    Località
    Verona
    Messaggi
    306
    Smartphone
    Galaxy S4 I9505

    Ringraziamenti
    13
    Ringraziato 41 volte in 25 Posts
    Predefinito

    Quote Originariamente inviato da frank17next Visualizza il messaggio
    Direi di si... purtroppo anche io non ho molte forze a quest'ora per scansionare quel documento... cmq si, è un effetto di quel modo di gestire l'aritmetica negli elaboratori a base macchina di turing
    Si insomma, EVVIVA l'informatica! Domani proverò a chiedere al mio insegnante di informatica per vedere come risolvere (una mezza idea già la ho, ma è abbastanza rozza).
    Grazie mille per le info!

  8. #6
    Senior Droid L'avatar di frank17next


    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    739
    Smartphone
    GNexus, Galaxy Note, GT 10.1

    Ringraziamenti
    16
    Ringraziato 143 volte in 102 Posts
    Predefinito

    Quote Originariamente inviato da cavaz Visualizza il messaggio
    Si insomma, EVVIVA l'informatica! Domani proverò a chiedere al mio insegnante di informatica per vedere come risolvere (una mezza idea già la ho, ma è abbastanza rozza).
    Grazie mille per le info!
    Ehehe... beh ma è già risolto. 0.3-0.1 = 0.199999... Applica opportunamente Math.round sul risultato
    Nexus 6 - 5.0.1 Stock
    Nexus 5 - 5.0.1 Stock + Root
    Galaxy Note 3 GT-N9005 - 4.4.4 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  9. Il seguente Utente ha ringraziato frank17next per il post:

    cavaz (13-04-12)

  10. #7
    Androidiano


    Registrato dal
    Apr 2012
    Messaggi
    150
    Smartphone
    Onda TQ 150

    Ringraziamenti
    5
    Ringraziato 9 volte in 8 Posts
    Predefinito

    0.1 in binario diventa periodico, cioè un numero con infiniti decimali che però si ripetono periodicamente.
    Quindi se converti 0.1 in binario e poi riconverti in decimale non ottieni daccapo 0.1 ma un numero leggermente inferiore.
    L'unica soluzione è usare il massimo della precisione possibile e arrotondare il risultato.

  11. #8
    Senior Droid L'avatar di cavaz


    Registrato dal
    Sep 2009
    Località
    Verona
    Messaggi
    306
    Smartphone
    Galaxy S4 I9505

    Ringraziamenti
    13
    Ringraziato 41 volte in 25 Posts
    Predefinito

    Ho visto adesso le ultime risposte. Grazie di tutto! Avevo risolto ancora qualche giorno fa

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy