C-Standardbibliothek -<math.h>
Einführung
math.hDie Header-Datei definiert verschiedene mathematische Funktionen und ein Makro. Alle verfügbaren Funktionen in dieser Bibliothek haben Parameter vom Typdouble, und alle geben ein Ergebnis vom Typdoublezurück.
<math.h>Es ist eine Header-Datei in der C-Standardbibliothek, die eine große Anzahl von Funktionen und Makros für mathematische Operationen enthält. Diese Funktionen und Makros bieten grundlegende arithmetische Operationen, trigonometrische Funktionen, Exponentialfunktionen, Logarithmusfunktionen, Potenzfunktionen, Rundungsfunktionen usw.
Bibliotheksmakros
In<math.h>Unter ihnen dienen einige Makros dazu, den Fehlerstatus mathematischer Funktionen darzustellen:
| Makro | Beschreibung |
|---|---|
HUGE_VAL | Der Wert, der zurückgegeben wird, wenn das Funktionsergebnis überläuft (positive Unendlichkeit). Dieses Makro stellt eine sehr große Gleitkommazahl mit doppelter Genauigkeit dar, die typischerweise als Rückgabewert bestimmter mathematischer Funktionen verwendet wird, wenn das Ergebnis den darstellbaren Bereich überschreitet. Wenn das Ergebnis einer Funktion zu groß ist, um als normale Gleitkommazahl dargestellt zu werden (d. h. ein Überlauf tritt auf), wird errno auf ERANGE (Bereichsfehler) gesetzt und HUGE_VAL oder sein negativer Wert (für negative Unendlichkeit) zurückgegeben. |
HUGE_VALF | Der Wert, der zurückgegeben wird, wenn das Funktionsergebnis überläuft (positive Unendlichkeit, Gleitkommatyp) |
HUGE_VALL | Der Wert, der zurückgegeben wird, wenn das Funktionsergebnis überläuft (positive Unendlichkeit, long double-Präzision) |
INFINITY | Positive Unendlichkeit |
NAN | Ein Wert, der keine Zahl ist (Not-A-Number) |
FP_INFINITE | Stellt Unendlichkeit dar |
FP_NAN | Repräsentiert einen nicht-numerischen Wert |
FP_NORMAL | Repräsentiert eine normale Gleitkommazahl |
FP_SUBNORMAL | Repräsentiert eine subnormale Zahl |
FP_ZERO | Repräsentiert Null |
Bibliotheksfunktionen
Im Folgenden sind die in der Header-Datei math.h definierten Funktionen aufgeführt:
| Laufende Nummer | Funktion & Beschreibung |
|---|---|
| 1 | double acos(double x) Gibt den Arkuskosinus von x im Bogenmaß zurück. |
| 2 | double asin(double x) Gibt den Arkussinus von x im Bogenmaß zurück. |
| 3 | double atan(double x) Gibt den Arkustangens von x im Bogenmaß zurück. |
| 4 | double atan2(double y, double x) Gibt den Arkustangens von y/x im Bogenmaß zurück. Die Vorzeichen der Werte von y und x bestimmen den korrekten Quadranten. |
| 5 | double cos(double x) Gibt den Kosinus eines Winkels x im Bogenmaß zurück. |
| 6 | double cosh(double x) Gibt den hyperbolischen Kosinus von x zurück. |
| 7 | double sin(double x) Gibt den Sinus eines Winkels x im Bogenmaß zurück. |
| 8 | double sinh(double x) Gibt den hyperbolischen Sinus von x zurück. |
| 9 | double tanh(double x) Gibt den hyperbolischen Tangens von x zurück. |
| 10 | double exp(double x) Gibt e hoch x zurück. |
| 11 | double frexp(double x, int *exponent) Zerlegt die Gleitkommazahl x in eine Mantisse und einen Exponenten. Der Rückgabewert ist die Mantisse, und der Exponent wird in exponent gespeichert. Der resultierende Wert ist x = mantissa * 2 ^ exponent. |
| 12 | double ldexp(double x, int exponent) Gibt x multipliziert mit 2 hoch exponent zurück. |
| 13 | double log(double x) Gibt den natürlichen Logarithmus von x zurück (Logarithmus zur Basis e). |
| 14 | double log10(double x) Gibt den dekadischen Logarithmus von x zurück (Logarithmus zur Basis 10). |
| 15 | double modf(double x, double *integer) Der Rückgabewert ist der Bruchteil (der Teil nach dem Dezimalpunkt), und integer wird als ganzzahliger Teil gesetzt. |
| 16 | double pow(double x, double y) Gibt x hoch y zurück. |
| 17 | double sqrt(double x) Gibt die Quadratwurzel von x zurück. |
| 18 | double ceil(double x) Gibt den kleinsten ganzzahligen Wert zurück, der größer oder gleich x ist. |
| 19 | double fabs(double x) Gibt den Absolutbetrag von x zurück. |
| 20 | double floor(double x) Gibt den größten ganzzahligen Wert zurück, der kleiner oder gleich x ist. |
| 21 | double fmod(double x, double y) Gibt den Rest von x geteilt durch y zurück. |
Häufige mathematische Konstanten
Die folgenden sind<math.h>Einige häufig verwendete mathematische Konstanten, definiert in:
| Konstanten | Wert | Beschreibung |
|---|---|---|
M_PI | 3.14159265358979323846 | Pi π |
M_E | 2.71828182845904523536 | Die Basis des natürlichen Logarithmus, e |
M_LOG2E | 1.44269504088896340736 | log2(e) |
M_LOG10E | 0.43429448190325182765 | log10(e) |
M_LN2 | 0.69314718055994530942 | ln(2) |
M_LN10 | 2.30258509299404568402 | ln(10) |
M_PI_2 | 1.57079632679489661923 | π/2 |
M_PI_4 | 0.78539816339744830962 | π/4 |
M_1_PI | 0.31830988618379067154 | 1/π |
M_2_PI | 0.63661977236758134308 | 2/π |
M_2_SQRTPI | 1.12837916709551257390 | 2/√π |
M_SQRT2 | 1.41421356237309504880 | √2 |
M_SQRT1_2 | 0.70710678118654752440 | 1/√2 |
Das Folgende verwendet<math.h>Beispielcode für die Funktionen und Konstanten in:
Beispiel
#include <math.h>
int main() {
double x = 2.0;
double y = 3.0;
// Grundlegende Operationen
printf("sqrt(%.1f) = %.2f\n", x, sqrt(x));
printf("pow(%.1f, %.1f) = %.2f\n", x, y, pow(x, y));
printf("exp(%.1f) = %.2f\n", x, exp(x));
printf("log(%.1f) = %.2f\n", x, log(x));
printf("log10(%.1f) = %.2f\n", x, log10(x));
// Trigonometrische Funktionen
double angle = M_PI / 4; // 45 Grad
printf("sin(%.2f) = %.2f\n", angle, sin(angle));
printf("cos(%.2f) = %.2f\n", angle, cos(angle));
printf("tan(%.2f) = %.2f\n", angle, tan(angle));
// Rundungsfunktionen
double z = 5.8;
printf("ceil(%.1f) = %.1f\n", z, ceil(z));
printf("floor(%.1f) = %.1f\n", z, floor(z));
printf("fabs(%.1f) = %.1f\n", z, fabs(z));
return 0;
}
Das Ausführen des obigen Programms erzeugt eine Ausgabe ähnlich der folgenden:
sqrt(2.0) = 1.41 pow(2.0, 3.0) = 8.00 exp(2.0) = 7.39 log(2.0) = 0.69 log10(2.0) = 0.30 sin(0.79) = 0.71 cos(0.79) = 0.71 tan(0.79) = 1.00 ceil(5.8) = 6.0 floor(5.8) = 5.0 fabs(5.8) = 5.8
<math.h>Es bietet eine Reihe mathematischer Funktionen und Konstanten, die Programmierern helfen, verschiedene mathematische Berechnungen in C durchzuführen. Durch die Verwendung dieser Funktionen und Konstanten können komplexe mathematische Operationen einfach implementiert werden, wodurch die Effizienz und Lesbarkeit des Programms verbessert werden.