Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::nearbyint,std::nearbyintf,std::nearbyintl

      From cppreference.com
      <cpp‎ |numeric‎ |math
       
       
       
      Common mathematical functions
      Nearest integer floating point operations
      (C++11)(C++11)(C++11)
      (C++11)
      nearbyint
      (C++11)
      (C++11)(C++11)(C++11)
      Floating point manipulation functions
      (C++11)(C++11)
      (C++11)
      (C++11)
      Classification and comparison
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      Types
      (C++11)
      (C++11)
      (C++11)
      Macro constants
       
      Defined in header<cmath>
      (1)
      float       nearbyint(float num);

      double      nearbyint(double num);

      longdouble nearbyint(longdouble num);
      (until C++23)
      /*floating-point-type*/
                  nearbyint(/*floating-point-type*/ num);
      (since C++23)
      float       nearbyintf(float num);
      (2)(since C++11)
      longdouble nearbyintl(longdouble num);
      (3)(since C++11)
      SIMD overload(since C++26)
      Defined in header<simd>
      template</*math-floating-point*/ V>

      constexpr/*deduced-simd-t*/<V>

                  nearbyint(const V& v_num);
      (S)(since C++26)
      Defined in header<cmath>
      template<class Integer>
      double      nearbyint( Integer num);
      (A)
      1-3) Rounds the floating-point argumentnum to an integer value in floating-point format, using thecurrent rounding mode. The library provides overloads ofstd::nearbyint for all cv-unqualified floating-point types as the type of the parameter.(since C++23)
      S) The SIMD overload performs an element-wisestd::nearbyint onv_num.
      (Seemath-floating-point anddeduced-simd-t for their definitions.)
      (since C++26)
      A) Additional overloads are provided for all integer types, which are treated asdouble.
      (since C++11)

      Contents

      [edit]Parameters

      num - floating-point or integer value

      [edit]Return value

      The nearest integer value tonum, according to thecurrent rounding mode, is returned.

      [edit]Error handling

      This function is not subject to any of the errors specified inmath_errhandling.

      If the implementation supports IEEE floating-point arithmetic (IEC 60559),

      • FE_INEXACT is never raised.
      • Ifnum is ±∞, it is returned, unmodified.
      • Ifnum is ±0, it is returned, unmodified.
      • Ifnum is NaN, NaN is returned.

      [edit]Notes

      The only difference betweenstd::nearbyint andstd::rint is thatstd::nearbyint never raisesFE_INEXACT.

      The largest representable floating-point values are exact integers in all standard floating-point formats, sostd::nearbyint never overflows on its own; however the result may overflow any integer type (includingstd::intmax_t), when stored in an integer variable.

      If the current rounding mode isFE_TONEAREST, this function rounds to even in halfway cases (likestd::rint, but unlikestd::round).

      The additional overloads are not required to be provided exactly as(A). They only need to be sufficient to ensure that for their argumentnum of integer type,std::nearbyint(num) has the same effect asstd::nearbyint(static_cast<double>(num)).

      [edit]Example

      Run this code
      #include <cfenv>#include <cmath>#include <iostream>#pragma STDC FENV_ACCESS ON int main(){std::fesetround(FE_TONEAREST);std::cout<<"rounding to nearest:\n"<<"nearbyint(+2.3) = "<< std::nearbyint(2.3)<<"  nearbyint(+2.5) = "<< std::nearbyint(2.5)<<"  nearbyint(+3.5) = "<< std::nearbyint(3.5)<<'\n'<<"nearbyint(-2.3) = "<< std::nearbyint(-2.3)<<"  nearbyint(-2.5) = "<< std::nearbyint(-2.5)<<"  nearbyint(-3.5) = "<< std::nearbyint(-3.5)<<'\n'; std::fesetround(FE_DOWNWARD);std::cout<<"rounding down:\n"<<"nearbyint(+2.3) = "<< std::nearbyint(2.3)<<"  nearbyint(+2.5) = "<< std::nearbyint(2.5)<<"  nearbyint(+3.5) = "<< std::nearbyint(3.5)<<'\n'<<"nearbyint(-2.3) = "<< std::nearbyint(-2.3)<<"  nearbyint(-2.5) = "<< std::nearbyint(-2.5)<<"  nearbyint(-3.5) = "<< std::nearbyint(-3.5)<<'\n'; std::cout<<"nearbyint(-0.0) = "<< std::nearbyint(-0.0)<<'\n'<<"nearbyint(-Inf) = "<< std::nearbyint(-INFINITY)<<'\n';}

      Output:

      rounding to nearest: nearbyint(+2.3) = 2  nearbyint(+2.5) = 2  nearbyint(+3.5) = 4nearbyint(-2.3) = -2  nearbyint(-2.5) = -2  nearbyint(-3.5) = -4rounding down:nearbyint(+2.3) = 2  nearbyint(+2.5) = 2  nearbyint(+3.5) = 3nearbyint(-2.3) = -3  nearbyint(-2.5) = -3  nearbyint(-3.5) = -4nearbyint(-0.0) = -0nearbyint(-Inf) = -inf

      [edit]See also

      (C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)
      nearest integer using current rounding mode with
      exception if the result differs
      (function)[edit]
      (C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)
      nearest integer, rounding away from zero in halfway cases
      (function)[edit]
      (C++11)(C++11)
      gets or sets rounding direction
      (function)[edit]
      C documentation fornearbyint
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/numeric/math/nearbyint&oldid=160768"

      [8]ページ先頭

      ©2009-2025 Movatter.jp