Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      FP_NORMAL, FP_SUBNORMAL, FP_ZERO, FP_INFINITE, FP_NAN

      From cppreference.com
      <cpp‎ |numeric‎ |math
       
       
       
      Common mathematical functions
      Nearest integer floating point operations
      (C++11)(C++11)(C++11)
      (C++11)
      (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
      Classification
      FP_NORMALFP_SUBNORMALFP_ZEROFP_INFINITEFP_NAN
      (C++11)(C++11)(C++11)(C++11)(C++11)


       
      Defined in header<cmath>
      #define FP_NORMAL    /* implementation defined */
      (since C++11)
      #define FP_SUBNORMAL /* implementation defined */
      (since C++11)
      #define FP_ZERO      /* implementation defined */
      (since C++11)
      #define FP_INFINITE  /* implementation defined */
      (since C++11)
      #define FP_NAN       /* implementation defined */
      (since C++11)

      TheFP_NORMAL,FP_SUBNORMAL,FP_ZERO,FP_INFINITE,FP_NAN macros each represent a distinct category of floating-point numbers. They all expand to an integer constant expression.

      Constant Explanation
      FP_NORMAL indicates that the value isnormal, i.e. not an infinity, subnormal, not-a-number or zero
      FP_SUBNORMAL indicates that the value issubnormal
      FP_ZERO indicates that the value is positive or negative zero
      FP_INFINITE indicates that the value is not representable by the underlying type (positive or negative infinity)
      FP_NAN indicates that the value is not-a-number (NaN)

      [edit]Example

      Run this code
      #include <cfloat>#include <cmath>#include <iostream> auto show_classification(double x){switch(std::fpclassify(x)){case FP_INFINITE:return"Inf";case FP_NAN:return"NaN";case FP_NORMAL:return"normal";case FP_SUBNORMAL:return"subnormal";case FP_ZERO:return"zero";default:return"unknown";}} int main(){std::cout<<"1.0/0.0 is "<< show_classification(1/0.0)<<'\n'<<"0.0/0.0 is "<< show_classification(0.0/0.0)<<'\n'<<"DBL_MIN/2 is "<< show_classification(DBL_MIN/2)<<'\n'<<"-0.0 is "<< show_classification(-0.0)<<'\n'<<"1.0 is "<< show_classification(1.0)<<'\n';}

      Output:

      1.0/0.0 is Inf0.0/0.0 is NaNDBL_MIN/2 is subnormal-0.0 is zero1.0 is normal

      [edit]See also

      (C++11)
      categorizes the given floating-point value
      (function)[edit]
      C documentation forFP_categories
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/numeric/math/FP_categories&oldid=149289"

      [8]ページ先頭

      ©2009-2025 Movatter.jp