HOWTO · C
La funzione Round in C
In questo articolo viene illustrato come utilizzare la funzione round in C
Questo articolo spiegherà diversi metodi su come utilizzare la funzione round in C.
Usa la funzione round per arrotondare il numero a virgola mobile al numero intero più vicino e restituire il numero a virgola mobile
La funzione round fa parte delle utilità matematiche della libreria standard C definite nel file di intestazione <math.h>. Ci sono tre funzioni in questa famiglia: round, roundf e roundl. Queste funzioni sono per diversi tipi di numeri in virgola mobile e ciascuna restituisce il valore del tipo corrispondente. Nota che i file sorgente, inclusa l’intestazione math, devono essere compilati usando il flag -lm per collegare il codice della libreria. Nel seguente codice di esempio, dimostriamo le conversioni per più valori letterali float e inviamo i risultati alla console. Notare che round essenzialmente arrotonda lontano dallo zero. Se il valore integrale, -0, +0, NaN o INFINITY viene passato come argomento, viene restituito lo stesso valore.
#include <fenv.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
printf("round(+2.3) = %+.1f\n", round(2.3));
printf("round(+2.5) = %+.1f\n", round(2.5));
printf("round(+2.7) = %+.1f\n", round(2.7));
printf("round(-2.3) = %+.1f\n", round(-2.3));
printf("round(-2.5) = %+.1f\n", round(-2.5));
printf("round(-2.7) = %+.1f\n", round(-2.7));
exit(EXIT_SUCCESS);
}
Produzione:
round(+2.3) = +2.0
round(+2.5) = +3.0
round(+2.7) = +3.0
round(-2.3) = -2.0
round(-2.5) = -3.0
round(-2.7) = -3.0
Usa la funzione lround per arrotondare il numero a virgola mobile al numero intero più vicino e restituire il tipo integrale
La funzione lround, invece, arrotonda al numero intero più vicino e restituisce il valore integrale. Ci sono sei funzioni in questa famiglia, la metà delle quali restituisce long int come valore arrotondato e altre - long long int. lround simile alla famiglia round arrotonda i numeri reali a metà distanza da zero.
#include <fenv.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
printf("lround(+2.3) = %ld\n", lround(2.3));
printf("lround(+2.5) = %ld\n", lround(2.5));
printf("lround(+2.7) = %ld\n", lround(2.7));
printf("lround(-2.3) = %ld\n", lround(-2.3));
printf("lround(-2.5) = %ld\n", lround(-2.5));
printf("lround(-2.7) = %ld\n", lround(-2.7));
exit(EXIT_SUCCESS);
}
Produzione:
lround(+2.3) = 2
lround(+2.5) = 3
lround(+2.7) = 3
lround(-2.3) = -2
lround(-2.5) = -3
lround(-2.7) = -3
Utilizzare la funzione ceil per arrotondare il numero in virgola mobile al valore integrale più piccolo non inferiore all’argomento
In alternativa, la funzione ceil può essere utilizzata per arrotondare il numero in virgola mobile dato al valore intero più piccolo che non è inferiore all’argomento stesso. Simile alla funzione round, ci sono anche tre funzioni in questa famiglia - ceil, ceilf e ceill da utilizzare rispettivamente per i tipi float, double e long double. Nota che includiamo il segno + nella stringa di specificazione prinf e mostra automaticamente i segni corrispondenti per gli argomenti arrotondati.
#include <fenv.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main(void) {
printf("ceil(+2.3) = %+.1f\n", ceil(2.3));
printf("ceil(+2.5) = %+.1f\n", ceil(2.5));
printf("ceil(+2.7) = %+.1f\n", ceil(2.7));
printf("ceil(-2.3) = %+.1f\n", ceil(-2.3));
printf("ceil(-2.5) = %+.1f\n", ceil(-2.5));
printf("ceil(-2.7) = %+.1f\n", ceil(-2.7));
exit(EXIT_SUCCESS);
}
Produzione:
ceil(+2.3) = 3.000000
ceil(+2.5) = 3.000000
ceil(+2.7) = 3.000000
ceil(-2.3) = -2.000000
ceil(-2.5) = -2.000000
ceil(-2.7) = -2.000000