19. Funzioni matematiche
La libreria math.h include numerose funzioni matematiche che possono tornare utili per la risoluzione di numerosi problemi. Sono incluse sia funzioni specializzate ad operare con numeri in virgola mobile (double e float) sia funzioni che operano su valori numerici di tipo intero (int e long).
In base alle esigenze occorre scegliere la funzione più idonea per le proprie esigenze.
Si tenga conto che le funzioni di tipo double operano su valori numerici con parte decimale ed anche il risultato è dello stesso tipo. Poiché il cast di un numero in virgola mobile (double o float che sia) in intero effettua un troncamento e non un arrotondamento, l'uso incauto di funzioni di questo tipo può produrre risultati inattesi.
Esempio
In questo esempio, operando su numeri in virgola mobile, si utilizzeranno le funzioni sqrt() e pow() per il calcolo della diagonale di un rettangolo.
#include <stdio.h>
#include <math.h>
int main()
{
float b, h, d;
printf("Inserire le misure della base e dell'altezza di un rettangolo in cm. (numeri decimali): ");
scanf("%f %f", &b, &h);
d=sqrt(pow(b, 2) + pow(h, 2));
printf("la misura della diagonale del rettangolo e' di %.2f cm", d);
return 0;
}
La potenza
Nel seguente esempio si utilizza la funzione pow() per calcolare la potenza di un intero, su un computer con Windows, ottenendo un risultato impreciso.
#include <stdio.h>
#include <math.h>
int main()
{
int i, n;
for(i=0; i<6;i++){
n=pow(10, i);
printf("%d\n", n);
}
return 0;
}
Esecuzione:
1
10
99
1000
9999
100000
Per ovviare a ciò e ottenere un arrotondamento corretto, ,sempre utilizzando la funzione pow(), si può procedere nel seguente modo:
#include <stdio.h>
#include <math.h>
int main()
{
int i, n;
for(i=0; i<6;i++){
n=pow(10, i)+0.5;
printf("%d\n", n);
}
return 0;
}
Esecuzione:
1
10
100
1000
10000
100000
La soluzione più corretta è quella di utilizzare la funzione powl() che opera su valori numerici di tipo long.
#include <stdio.h>
#include <math.h>
int main()
{
int i, n;
for(i=0; i<6;i++){
n=powl(10, i);
printf("%d\n", n);
}
return 0;
}
Esecuzione:
1
10
100
1000
10000
100000
Sito: 7ecnologie
Sezione: 08. C language
Capitolo: 02. Introduzione al C
Paragrafo: 19. Funzioni matematiche
Indice dei capitoli: 00. Risorse - 01 Ambiente di sviluppo - 02. Introduzione al C - 03. Le librerie - 04. Tutorial - 05. Esercizi svolti - 98. Esercizi
Indice dei paragrafi: 01. Hello World - 02. Variabile di tipo int - 03. Input da tastiera - 04. Controllo condizionale if - 05. Operatori logici - 06. Ciclo while - 07. Operatore modulo - 08. Array - 09. Ciclo for - 10. Ciclo do/while - 11. Variabili di tipo float - 12. Funzione random() - 13. Impostazione del set di caratteri - 14. Definizione di funzioni - 15. Passaggio di parametri: gli array - 16. Variabili: visibilità e durata - 17. Il tipo char - 18. I file - 19. Funzioni matematiche