Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    37

    Formattazione output C++

    Ciao a tutti! Stavo facendo qualche esercizio, cose banali, e mi sono fermato in un esercizio in cui mi chiede di stampare a video una variabile double, risultata dal prodotto di due variabili double, in modo che abbia solo 4 cifre decimali dopo la virgola. Nel libro di programmazione che uso (Fondamenti di programmazione in C++, di Aguilar) non ne accenna e nemmeno su internet ho trovato niente. L'unica istruzione che mi suggerisce la ricerca su google è

    codice:
    cout << cout.precision(4) << x;
    ma non stampa 4 decimali e sbaglia pure il prodotto. Qualcuno sa aiutarmi?
    Grazie a tutti in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    59
    Ciao!!!

    Quello che fai è errato...

    Dovresti invece fare una cosa del genere:

    codice:
    cout << setprecision(3) << x;
    per usare setprecision() devi includere iomanip

    puoi usare anche cout.precision(4);
    però in questo modo

    codice:
    cout.precision(4);
    cout << x;
    tutte le cifre verranno arrotondate naturalmente...

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    37
    Ti ringrazio per la risposta, ma purtroppo non è quello che cercavo I metodi che tu mi hai suggerito stampano a video un totale di 4 cifre, a me serve che venga stampato a video un totale corretto di cifre intere seguite da 4 cifre dopo la virgola... Per esempio se inserisco

    codice:
    1.12234
    e
    codice:
    3.45523
    dovrebbe stampare a video il loro prodotto in questo formato
    codice:
    3.8779
    e non
    codice:
    3.87794

  4. #4
    cout.precision(4);
    cout << fixed << x;

  5. #5
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    codice:
    cout.precision(4);
    cout << fixed << x;

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    59
    si si non avevo letto bene la tua richiesta, comunque basta modificare in questo modo:

    codice:
    cout << fixed << setprecision(4) << x;
    in questo modo ti stamperà solo le prime 4 cifre decimali, sempre arrotondate...

    quindi se hai 1.12345 ti stamperà 1.1235 se hai 11.12345 ti stamperà 11.1235

    spero di aver centrato ora...

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    37
    Ringrazio tutti, entrambi i codici svolgono il lavoro esatto qualcuno però può spiegarmi cosa sia la parola fixed? Sto iniziando ora a programmare in C++ e in generale ad oggetti e non mi sono mai imbattuto in questo termine...

  8. #8
    è un po' come endl, per farti capire. cout è un oggetto, e se applico l'operatore "<<" e alla destra metto "qualcosa", verrà chiamata una routine diversa a seconda di che tipo è quel "qualcosa"...in questo caso gli passi un oggetto "fixed" e cout fa le opportune operazioni.
    Qua trovi tutte le informazioni che vuoi:
    http://www.cplusplus.com/reference/i...ulators/fixed/

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    37
    Ti ringrazio, hai chiarito tutti i miei dubbi Grazie anche a tutti gli altri, precisi e celeri nelle risposte Spero di non andare contro il regolamento, ma avrei un'altra domanda sullo stesso tema. Come faccio a giustificare il testo che stampo a destra? Vi posto il testo dell'esercizio così mi spiego meglio:

    codice:
    Scrivere un programma che legga due interi di tre cifre e ne calcoli e stampi il loro prodotto, quoziente e resto. L'output dovrà essere giustificato a destra, come nel seguente esempio:
    739
    x 12
    ----
    8868

  10. #10
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Mette i flag dello stream a fixed, cioè dice a cout di stampare il float rappresentato come fixed point.
    Cioè non in notazione IEEE-754 ma in una notazione senza esponente.
    Ad esempio 2.75:

    10,11

    Per cui non essendoci l' esponente può sapere quando termina la precisione.
    Infatti se il numero era rappresentato così:

    101010,10101010000

    Gli ultimi zeri li poteva ignorare.Sa quando fermarsi insomma.
    setprecision(4) dice a cout di fermarsi al quarto bit letto.

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.