Namensräume
Varianten
Aktionen

nearbyint, nearbyintf, nearbyintl

Von cppreference.com
< c‎ | numerik‎ | math
 
 
 
Allgemeine mathematische Funktionen
Funktionen
Grundlegende Operationen
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
Maximum/Minimum-Operationen
(C99)
(C99)
Exponentialfunktionen
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
Potenzfunktionen
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
Trigonometrische und hyperbolische Funktionen
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
Nächste ganze Gleitkommazahlen
(C99)(C99)(C99)
(C99)

nearbyint
(C99)
(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
Gleitkomma-Manipulation
(C99)(C99)
(C99)(C23)
(C99)
Verengende Operationen
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quanten- und Quantenexponent-Funktionen
Dezimal-Neu-Kodierungsfunktionen
Gesamtordnung und Payload-Funktionen
Klassifizierung
(C99)
(C99)
(C99)
(C23)
Fehler- und Gammafunktionen
(C99)
(C99)
(C99)
(C99)
Typen
Makrokonstanten
Spezielle Gleitkommawerte
(C99)(C23)
Argumente und Rückgabewerte
Fehlerbehandlung
Schnelle Operationsanzeigen
 
Definiert in Header <math.h>
float       nearbyintf( float arg );
(1) (seit C99)
double      nearbyint( double arg );
(2) (seit C99)
long double nearbyintl( long double arg );
(3) (seit C99)
Definiert in Header <tgmath.h>
#define nearbyint( arg )
(4) (seit C99)
1-3) Rundet das Gleitkomma-Argument arg auf einen ganzzahligen Wert im Gleitkommaformat, unter Verwendung des aktuellen Rundungsmodus.
4) Typ-generische Makro: Wenn arg den Typ long double hat, wird nearbyintl aufgerufen. Andernfalls, wenn arg den ganzzahligen Typ oder den Typ double hat, wird nearbyint aufgerufen. Andernfalls wird nearbyintf bzw. aufgerufen.

Inhalt

[bearbeiten] Parameter

arg - Gleitkommawert

[bearbeiten] Rückgabewert

Der nächstgelegene ganzzahlige Wert zu arg, gemäß dem aktuellen Rundungsmodus, wird zurückgegeben.

[bearbeiten] Fehlerbehandlung

Diese Funktion unterliegt keiner der in math_errhandling spezifizierten Fehler.

Wenn die Implementierung IEEE-Gleitkomma-Arithmetik (IEC 60559) unterstützt,

  • FE_INEXACT wird niemals ausgelöst.
  • Wenn arg ±∞ ist, wird es unverändert zurückgegeben.
  • Wenn arg ±0 ist, wird es unverändert zurückgegeben.
  • Wenn arg NaN ist, wird NaN zurückgegeben.

[bearbeiten] Hinweise

Der einzige Unterschied zwischen nearbyint und rint besteht darin, dass nearbyint niemals FE_INEXACT auslöst.

Die größten darstellbaren Gleitkommawerte sind in allen Standard-Gleitkommaformaten exakte ganze Zahlen, daher tritt bei nearbyint allein niemals ein Überlauf auf; das Ergebnis kann jedoch jeden ganzzahligen Typ (einschließlich intmax_t) überlaufen, wenn es in einer ganzzahligen Variablen gespeichert wird.

Wenn der aktuelle Rundungsmodus FE_TONEAREST ist, rundet diese Funktion bei gleichen Fällen (wie rint, aber im Gegensatz zu round) auf die gerade Zahl.

[bearbeiten] Beispiel

#include <fenv.h>
#include <math.h>
#include <stdio.h>
 
int main(void)
{
// #pragma STDC FENV_ACCESS ON
    fesetround(FE_TONEAREST);
    printf("rounding to nearest:\nnearbyint(+2.3) = %+.1f  ", nearbyint(2.3));
    printf("nearbyint(+2.5) = %+.1f  ", nearbyint(2.5));
    printf("nearbyint(+3.5) = %+.1f\n", nearbyint(3.5));
    printf("nearbyint(-2.3) = %+.1f  ", nearbyint(-2.3));
    printf("nearbyint(-2.5) = %+.1f  ", nearbyint(-2.5));
    printf("nearbyint(-3.5) = %+.1f\n", nearbyint(-3.5));
 
    fesetround(FE_DOWNWARD);
    printf("rounding down: \nnearbyint(+2.3) = %+.1f  ", nearbyint(2.3));
    printf("nearbyint(+2.5) = %+.1f  ", nearbyint(2.5));
    printf("nearbyint(+3.5) = %+.1f\n", nearbyint(3.5));
    printf("nearbyint(-2.3) = %+.1f  ", nearbyint(-2.3));
    printf("nearbyint(-2.5) = %+.1f  ", nearbyint(-2.5));
    printf("nearbyint(-3.5) = %+.1f\n", nearbyint(-3.5));
 
    printf("nearbyint(-0.0) = %+.1f\n", nearbyint(-0.0));
    printf("nearbyint(-Inf) = %+.1f\n", nearbyint(-INFINITY));
}

Ausgabe

rounding to nearest:
nearbyint(+2.3) = +2.0  nearbyint(+2.5) = +2.0  nearbyint(+3.5) = +4.0
nearbyint(-2.3) = -2.0  nearbyint(-2.5) = -2.0  nearbyint(-3.5) = -4.0
rounding down:
nearbyint(+2.3) = +2.0  nearbyint(+2.5) = +2.0  nearbyint(+3.5) = +3.0
nearbyint(-2.3) = -3.0  nearbyint(-2.5) = -3.0  nearbyint(-3.5) = -4.0
nearbyint(-0.0) = -0.0
nearbyint(-Inf) = -inf

[bearbeiten] Referenzen

  • C23-Standard (ISO/IEC 9899:2024)
  • 7.12.9.3 The nearbyint functions (S. TBD)
  • 7.25 Typ-generische Mathematik <tgmath.h> (S. TBD)
  • F.10.6.3 The nearbyint functions (S. TBD)
  • C17-Standard (ISO/IEC 9899:2018)
  • 7.12.9.3 The nearbyint functions (S. TBD)
  • 7.25 Typ-generische Mathematik <tgmath.h> (S. TBD)
  • F.10.6.3 The nearbyint functions (S. TBD)
  • C11-Standard (ISO/IEC 9899:2011)
  • 7.12.9.3 The nearbyint functions (S. 251-252)
  • 7.25 Typ-generische Mathematik <tgmath.h> (S. 373-375)
  • F.10.6.3 The nearbyint functions (S. 526)
  • C99-Standard (ISO/IEC 9899:1999)
  • 7.12.9.3 The nearbyint functions (S. 232)
  • 7.22 Typ-generische Mathematik <tgmath.h> (S. 335-337)
  • F.9.6.3 The nearbyint functions (S. 463)

[bearbeiten] Siehe auch

(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)
rundet auf eine ganze Zahl gemäß der aktuellen Rundungsregel mit
Ausnahme, wenn das Ergebnis abweicht
(Funktion) [bearbeiten]
(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)(C99)
rundet auf die nächste ganze Zahl, wobei bei Halb-Wert-Fällen von Null weg gerundet wird
(Funktion) [bearbeiten]
holt oder setzt die Rundungsrichtung
(function) [edit]
C++ Dokumentation für nearbyint