Pagina 3 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 21 a 30 su 33

Discussione: [C] Cast Errato

  1. #21
    Se applico la funzione round() alla variabile double che contiene 1.0000000 (che poi è 0.99999999999) mi restituisce 58658687.

  2. #22
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Originariamente inviato da giaomnitel1
    Ecco un pezzettino di codice che a me non funziona sicuro:
    Con i decimali e le approssimazioni avrai sempre dei problemi ...

    Non ti avevo suggerito di estrarre le cifre dalla stringa ... ? Hai provato ?

  3. #23
    mi pare impossibile...
    perchè:

    round(0.999999999999999999)==1 !!!!!

    round(1.00000000000000000000)==1 !!!!!

    se double x=0.99999999999;

    round(x)==1
    approssima x all'intero + vicino.. meglio di cosiì!
    prova!!

  4. #24
    Non ho provato...ma è un macello..devo acqusire come stringa, convertirla in double ed effettuare i controlli...dopodichè estrarre le singole cifre (controllando di non estrarre il punto) e convertire le singole cifre e metterle nell'array...è un macello!
    Cosi invece con 2 operazioni di modulo e quoziente lo facevo! Può essere che non c'è soluzione a un problema del genere?!

  5. #25
    hai provato?? il round??
    cmq round restituisce un intero, se lo stampi con %f non so cosa venga fuori, magari è quello l'errore!

    .. per scrivere il codice devi fare:
    [ CODE ] codice [ /CODE ]
    non devono esserci spazi tra le parentesi e il CODE

  6. #26
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Originariamente inviato da giaomnitel1
    Non ho provato...ma è un macello..devo acqusire come stringa, convertirla in double ed effettuare i controlli...dopodichè estrarre le singole cifre (controllando di non estrarre il punto) e convertire le singole cifre e metterle nell'array...è un macello!
    Cosi invece con 2 operazioni di modulo e quoziente lo facevo! Può essere che non c'è soluzione a un problema del genere?!
    Ma no ... non e' un macello ...

    I floating point soffrono di questo problema (matematico) ... puoi risolvere il caso specifico con il round, ma se ne presentera' un altro subito dopo ...

    Prova con le stringhe ...

  7. #27
    Originariamente inviato da roxxy86
    hai provato?? il round??
    cmq round restituisce un intero, se lo stampi con %f non so cosa venga fuori, magari è quello l'errore!
    Questo è il codice che sto eseguendo:

    #include <stdio.h>
    #include <stdlib.h>

    main()
    {
    double a=2.01;
    double dec;
    int b;
    int dec2;


    b=(int)a;
    printf("a*100=%.2f\n", a*100);
    dec=(a-b)*100;
    dec2=round(dec);
    printf("b=%d dec=%.lf\n", b, dec);
    printf("Dec2=%d\n\n",dec2);
    system("pause");
    }

    E mi esce Dec2= a un macello..anzichè 1 VVoVe:

  8. #28
    cavoli non ci credo!! VVoVe:
    con il mio DEVC++ mi viene dec2==1
    com'è possibile?? usi il borland per caso?

  9. #29
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Dec2=a


    ???

    ma che dici ... visualizza Dec2=1

    ... comunque, dato che non vuoi seguire il consiglio ...

  10. #30
    Uso il DevC++...ma ho appena provato a impostare a NO la voce "ANSI Standard C" nelle opzioni di compilazione..e ora funziona! Mah...ora però tocca provare con gli altri numeri...perchè secondo me potrebbe creare altri problemi...vediamo

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 © 2026 vBulletin Solutions, Inc. All rights reserved.