Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C++] Float e cicli

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    567

    [C++] Float e cicli

    mi potreste spiegare xkè questo frammento di codice:

    float i,f;
    f=1/50.0;
    for (i=0.0; i!=1.0; i+=f) printf("A");

    genera un ciclo infinito?

    thx

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    4
    ma nn puoi usare

    finche < o al limite <=

    il != nei cicpli for con step
    è pericoloso specialmene se si lavora
    con decimali...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    567
    sisi lo so...ma il codice non è mio... è un test in cui mi è stato richiesto l'output.

    cmq la cosa che nn capisco è xkè se uso double va, se uso float no

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    4
    dipende dalla precisione dei decimali..


    cmq sbaglio o 1/50 fa un numero non periodico?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    567
    sbagli -.-

    1/50=0.02

    e sia float ke double alla seconda cifra mi pare arrivino... boh -.-'

  6. #6
    Originariamente inviato da AleX ZeTa
    sbagli -.-

    1/50=0.02

    e sia float ke double alla seconda cifra mi pare arrivino... boh -.-'
    Sfortunatamente in base 2 (quella usata dal processore) è periodico ed è

    0.0(00001010001111010111)

    per cui a forza di sommare perdi la precisione e quindi purtroppo ti ritrovi che sommare 50 volte 1/50 non ti da uno, e il ciclo for ti sballa.

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.