Percentuali in C

di il
4 risposte

Percentuali in C

Buonasera!

Mi trovavo a scrivere un programma in C (linguaggio di cui sono ancora inesperta) in cui devo ricavare una percentuale. Io ho inizializzato la variabile "percentuale" come float, poi nel main ho scritto questa riga di codice:

percentuale=( m [j] *100)/5000;

//dove m[j] e' un intero positivo o negativo

io ho bisogno che il valore di "percentuale" sia arrotondato almeno alla seconda cifra decimale dopo la virgola (tipo: 0.45% oppure 0.457% ecc.), tuttavia il programma mi da come valore della variabile "percentuale" solo le cifre a sinistra della virgola.
Come risolvo il problema?

4 Risposte

  • Re: Percentuali in C

    Non si è capito molto ...

    Il valore può andare da 0 a 5000?

    Visualizzalo con la printf con i decimali che vuoi ... non si capisce che vuoi dire con "le cifre a sinistra ..."

    Forse se mostri la riga con cui visualizzi il valore, si comprende il problema ...
  • Re: Percentuali in C

    Ciao Carlotta,
    nel C le divisioni tra interi sono interpretate sempre come divisioni "intere", quindi il risultato dell'operazione che hai indicato ti darà sempre un numero intero, indipendentemente dal fatto che la variabile in cui conservi il risultato sia un float. Per risolvere devi usare l'operatore cast con cui specifichi che il risultato che vuoi ottenere deve conservare le cifre decimali. Il tuo codice viene quindi così modificato:
    
    percentuale=(float)(( m [i] [j] *100)/5000);
    
    Per stampare il risultato con diverse precisioni usi:
    
    printf("Percentuale=%.2f\n", percentuale);
    
    Buona serata.
  • Re: Percentuali in C

    @carlotta, intanto c'e' un ORRORE che ogni ziovine virgulto/virgulta fa quando pretende di programmare SENZA STUDIARE!

    In C le espressioni vengono VALUTATE usando il TIPO di DATO piu' SIGNIFICATIVO PRESENTE nell'espressione.

    Nel tuo caso, poiche' l'espressione a DESTRA dell'UGUALE coinvolge SOLO INTERI, il calcolo viene fatto SOLO CON GLI INTERI (somma tra interi, DIVISIONE tra INTERI che ritorna un INTERO, moltiplicazione tra interi).

    Quindi il risultato INTERO convertito in float avra' SEMPRE ZERO come parte decimale.

    Trucco, invece di "100" (che e' un INTERO), scrivi "100.0" (che e' un DOUBLE).

    Attenta, anche @riccardozack ha cannato
    Doveva convertire/castare UN SOLO VALORE dell'espressione, NON L'INTERA espressione
  • Re: Percentuali in C

    Problema risolto!!!
    Grazie mille a tutti coloro che mi hanno dato un aiuto.
Devi accedere o registrarti per scrivere nel forum
4 risposte