Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162

    Arrotondare un double

    Ragazzi, ho un semplice problema:
    Devo approssimare un double a 3 cifre dopo la virgola, c'è qualche funzione che lo fa?
    Grazie

    Ad esempio

    MioDouble =123,45999
    deve diventare
    MioDouble = 123,456

  2. #2

    Re: Arrotondare un double

    Originariamente inviato da giudf
    Ragazzi, ho un semplice problema:
    Devo approssimare un double a 3 cifre dopo la virgola, c'è qualche funzione che lo fa?
    Grazie

    Ad esempio

    MioDouble =123,45999
    deve diventare
    MioDouble = 123,456

    a primo impatto ti consiglierei di usare il manipolatore


    set precision(3)


    esempio:


    cout<<setprecision()<<0.123456

    viene stampato 0.123



    sempre che tu stia usando c++,cmq nn sono sicuro di cio' mi pare di ricordare una cosa del genere

  3. #3
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162
    No, purtroppo il mio programma lo devo realizzare in C

  4. #4
    a meno che nn risponda qualcun altro prima
    ti consiglio di fare una ricerca per la rete
    sotto la voce

    MANIPOLATORI

    e sicuramente troverai quello che cerchi

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: Arrotondare un double

    Originariamente inviato da giudf
    Ragazzi, ho un semplice problema:
    Devo approssimare un double a 3 cifre dopo la virgola, c'è qualche funzione che lo fa?
    Grazie

    Ad esempio

    MioDouble =123,45999
    deve diventare
    MioDouble = 123,456
    Beh ... 123.456 non ha senso ... forse volevi dire 123.46 e quindi, in C, per visualizzare tale valore puoi scrivere

    printf("%.2f\n", MioDouble);

  6. #6
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162
    Si, capisco quello che vuoi dirmi, però il mio scopo non è stamparlo, ma è inserirlo all'interno di una struttura con sole 3 cifre dopo la virgola, e poi quello che tu dici, pur essendo corretto non è equivalente a quello che serve a me, mi spiego meglio:

    12,3499999

    Approssimato è:

    12,345

    E non 12,349 che otterrei con il "metodo printf"

  7. #7
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162

    X Oregon

    X entrare più nel dettaglio:

    Ti ricordi, qualche settimana fa, tu mi hai dato delle "chicche" per convertire un double da NBO ad HBO e viceversa, bè usando le unioin, ed effettuando la conversione, il numero ottenuto, differisce da quello presente nel test del mio programma (fornito da professori), di qualche cifra decimale (quelle appunto citate sopra il risultato deve essere 12,345 mentre io ottengo tanti 9 dopo il 4)!!!
    Ovviamente il test mi fallisce perchè i numeri sono diversi e non ottengo il punteggio che mi serve, secondo te è un problema di conversione o no? Comunque sia credo che con un approssimazione della terza cifra, riuscirei a risolvere il problema.

    P.S Se non ti ricordi la funzioncina che mi avevi suggerito fammelo sapere che te la scrivo!!

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sì ... ricordamela ...

  9. #9
    Utente di HTML.it L'avatar di giudf
    Registrato dal
    Jun 2006
    Messaggi
    162
    No, errore mio. Tutto risolto, avevo fatto il seguente errore

    Anzichè prendere da file il double nel seguente modo:

    fread(PuntatoreADouble,sizeof(double),1,FP);
    converti(&PuntatoreADouble);

    avevo fatto il seguente stupido errore:

    fread(PuntatoreADouble,sizeof(double *) ....

    La funzione l'ho finita ed ho ottenuto il 100% del punteggio, quindi ti ringrazio anche per il tuo aiuto !

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