Formattazione numeri printf (C)

di il
5 risposte

Formattazione numeri printf (C)

Salve ragazzi, vi post il codice di un esercizietto che ho fatto
//Questo programma calcola il maggiore tra un elenco di valori immessi dall'utente

#include <stdio.h>

int main() {

    float number, max = 0;

    do {
        printf("Enter a number: ");
        scanf("%f", &number);
        if (number > max) max = number;
    }
    while (number > 0);

    printf("The largest number entered was %f\n", max);

    return 0;
}
C'è un modo rapido per cambiare dinamicamente il formato con cui viene stampato il numero finale? Perché scritto in questo modo mi stampa, giustamente, 6 zeri dopo la virgola anche nel caso di un numero intero, poiché ho dichiarato la variabile d'appoggio float. Un modo "lento" mi è venuto in mente: potrei contare le cifre decimali del numero che mi interessa con un ciclo e formattare l'output di conseguenza, ma penso proprio mi sfugga qualcosa di ovvio, e ci sia un modo più ovvio e banale. Grazie in anticipo dell'aiuto

5 Risposte

  • Re: Formattazione numeri printf (C)

    Puoi decidere di stampare un certo numero di cifre decimali, es. "%.2f"
  • Re: Formattazione numeri printf (C)

    candaluar ha scritto:


    Puoi decidere di stampare un certo numero di cifre decimali, es. "%.2f"
    non mi sono spiegato evidentemente, ci riprovo. Vorrei che il mio output rispetti il numero esatto di cifre decimali che gli do in input. Cioè, se il mio massimo è 123,45, mi deve stampare 123,45 e non 123,450000. Ma contemporaneamente non voglio che, rieseguendo il programma con altri numeri, magari con più cifre decimali, questi non mi vengano tagliati dal %.2f
  • Re: Formattazione numeri printf (C)

    L'unica cosa che ti posso suggerire è di "stampare" su una stringa temporanea sprintf(tmp,"%f", max) e dopodichè analizzi la stringa tmp partendo dal fondo; sostituisci tutti gli '0' con un bel terminatore ('\0') e procedi a ritroso finchè non arrivi ad una cifra diversa da 0 o al '.' o a inizio stringa.
    Alla fine stampi la tmp al posto di max.
  • Re: Formattazione numeri printf (C)

    Usa "%g"
  • Re: Formattazione numeri printf (C)

    oregon ha scritto:


    Usa "%g"
    %g lo conoscevo ma avevo completamente frainteso il suo significato. E' esattamente quello che volevo. Grazie mille
Devi accedere o registrarti per scrivere nel forum
5 risposte