Deklaracja
edytujdouble ceil (double x); float ceilf(float x); long double ceill(long double x); double floor (double x); float floorf(float x); long double floorl(long double x); double nearbyint (double x); float nearbyintf(float x); long double nearbyintl(long double x); double rint (double x); float rintf(float x); long double rintl(long double x); long lrint (double x); long lrintf(float x); long lrintl(long double x); long long llrint (double x); long long llrintf(float x); long long llrintl(long double x); double round (double x); float roundf(float x); long double roundl(long double x); long lround (double x); long lroundf(float x); long lroundl(long double x); long long llround (double x); long long llroundf(float x); long long llroundl(long double x); double trunc (double x); float truncf(float x); long double truncl(long double x); double modf (double x, double *ptr); float modff(float x, float *ptr); long double modfl(long double x, long double *ptr);
Plik nagłówkowy
edytujArgumenty
edytuj- x
- argumenty funkcji
- ptr
- wskaźnik do części ułamkowej
Opis
edytujFunkcje z przyrostkami "f" i "l" to inne wersje odpowiedniej funkcji bez przyrostka operujące na innych typach danych. Ponadto, funkcje z przedrostkiem "l" lub "ll" to inne wersje odpowiadających funkcji bez przedrostka zwracające wartości typu long lub long long. Z tego powodu w poniższym opisie odwołanie do konkretnej funkcji będzie oznaczać odwołanie się do wszystkich 3 wersji bez lub z przyrostkiem oraz do wszystkich wersji z przedrostkiem jeżeli takie istnieją.
Funkcje obliczają następujące wartości:
- ceil - sufit argumentu, czyli najmniejszą liczbę całkowitą większą lub równą x,
- floor - podłogę argumentu, czyli największa liczba całkowita mniejsza lub równa x,
- nearbyint - argument zaokrąglony do liczby całkowitej zgodnie z przyjętym kierunkiem zaokrąglania,
- rint - podobnie jak nearbyint argument zaokrąglony do liczby całkowitej zgodnie z przyjętym kierunkiem zaokrąglania, przy czym możliwe jest zaistnienie błędu niedokładności,
- round - argument zaokrąglony do najbliższej liczby całkowitej; jeżeli istnieją dwie takie liczby zaokrągla do tej o większym module,
- trunc - argument zaokrąglony w stronę zera, tj. liczbę całkowitą o największym module mniejszym lub równym modułowi x,
- modf - argument zaokrąglony w stronę zera (jak trunc) i dodatkowo w zmiennej wskazywanej przez ptr zapisuje część ułamkową argumentu.
Wartość zwracana
edytujWartości odpowiednich funkcji zgodnie z opisem powyżej.
W przypadku funkcji z przedrostkami "l" i "ll", jeżeli wartość nie mieści się w typie to zwracana wartość jest nieokreślona.
Przykład użycia
edytuj
#include <stdio.h>
#include <math.h>
int main( void)
{
double floating = 3.40;
double fractional;
double integer;
fractional = modf(floating, &integer);
printf ("%f = %f + %f\n", floating, integer, fractional); // when using printf, there are no floats
return 0;
}
kompilujemy
gcc m.c -Wall -Wextra
uruchamiamy
./a.out
Wynik:
3.400000 = 3.000000 + 0.400000
Uwagi
edytujWersje funkcji z przyroskiem "f" i "l" (tzn. wersje operujące na zmiennych typu float i long double) zostały wprwoadzone dopiero w standardzie C99. Również funkcje nearbyint, rint, lrint, llrint, lround oraz llround zostały wprowadzone dopiero w standardzie C99.
W przypadku użycia funkcji matematycznych może zaistnieć konieczność podania odpowiedneigo argumentu linkerowi, aby ten połączył program z biblioteką matematyczną. Np. na systemach GNU/Linux jest to -lm.