CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: Pierdebeer con ben 51 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: Pierdebeer con ben 150 Thanks ricevuti negli ultimi sette giorni
Utente del mese: Pierdebeer con ben 728 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 8 su 8
Discussione:

0.3-0.1=0.1999999....

  1. #1
    Senior Droid L'avatar di cavaz
    Registrato dal
    Sep 2009
    Località
    Verona
    Messaggi
    300
    Smartphone
    Galaxy S4 I9505
    Thanks
    13
    Thanked 37 Times 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
    Moderatore L'avatar di frank17next
    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    737
    Smartphone
    GNexus, Galaxy Note, GT 10.1
    Thanks
    16
    Thanked 142 Times 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 4 - [JB] 4.2.2 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    Galaxy Note GT-N7000 - [JB] 4.1.2 Stock Root
    Nexus One [GB] - HyperSense Nova
    ------------------------------------------------------------------------
    https://sites.google.com/site/frank17next/

  4. #3
    Senior Droid L'avatar di cavaz
    Registrato dal
    Sep 2009
    Località
    Verona
    Messaggi
    300
    Smartphone
    Galaxy S4 I9505
    Thanks
    13
    Thanked 37 Times 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
    Moderatore L'avatar di frank17next
    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    737
    Smartphone
    GNexus, Galaxy Note, GT 10.1
    Thanks
    16
    Thanked 142 Times 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 4 - [JB] 4.2.2 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    Galaxy Note GT-N7000 - [JB] 4.1.2 Stock Root
    Nexus One [GB] - HyperSense Nova
    ------------------------------------------------------------------------
    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
    300
    Smartphone
    Galaxy S4 I9505
    Thanks
    13
    Thanked 37 Times 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
    Moderatore L'avatar di frank17next
    Registrato dal
    Jan 2010
    Località
    Campobasso
    Messaggi
    737
    Smartphone
    GNexus, Galaxy Note, GT 10.1
    Thanks
    16
    Thanked 142 Times 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 4 - [JB] 4.2.2 Stock + Root
    Galaxy Tab 10.1 Slim P7500 - [JB] CyanogenMod 10 4.1.2 Pershoot (Nightly 20121013)
    Galaxy Note GT-N7000 - [JB] 4.1.2 Stock Root
    Nexus One [GB] - HyperSense Nova
    ------------------------------------------------------------------------
    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
    147
    Smartphone
    Onda TQ 150
    Thanks
    5
    Thanked 9 Times 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
    300
    Smartphone
    Galaxy S4 I9505
    Thanks
    13
    Thanked 37 Times 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 repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •