Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::numeric_limits<T>::round_style

      From cppreference.com
      <cpp‎ |types‎ |numeric limits
       
       
      Utilities library
       
       
      std::numeric_limits
      Static constants
      numeric_limits::round_style
      Static member functions
      Helper types
       
      staticconststd::float_round_style round_style;
      (until C++11)
      staticconstexprstd::float_round_style round_style;
      (since C++11)

      The value ofstd::numeric_limits<T>::round_style identifies the rounding style used by the floating-point typeT whenever a value that is not one of the exactly repesentable values ofT is stored in an object of that type.

      Contents

      [edit]Standard specializations

      T value ofstd::numeric_limits<T>::round_style
      /* non-specialized */std::round_toward_zero
      boolstd::round_toward_zero
      charstd::round_toward_zero
      signedcharstd::round_toward_zero
      unsignedcharstd::round_toward_zero
      wchar_tstd::round_toward_zero
      char8_t(since C++20)std::round_toward_zero
      char16_t(since C++11)std::round_toward_zero
      char32_t(since C++11)std::round_toward_zero
      shortstd::round_toward_zero
      unsignedshortstd::round_toward_zero
      intstd::round_toward_zero
      unsignedintstd::round_toward_zero
      longstd::round_toward_zero
      unsignedlongstd::round_toward_zero
      longlong(since C++11)std::round_toward_zero
      unsignedlonglong(since C++11)std::round_toward_zero
      float usuallystd::round_to_nearest
      double usuallystd::round_to_nearest
      longdouble usuallystd::round_to_nearest

      [edit]Notes

      These values are constants, and do not reflect the changes to the rounding made bystd::fesetround. The changed values may be obtained fromFLT_ROUNDS orstd::fegetround.

      [edit]Example

      The decimal value0.1 cannot be represented by a binary floating-point type. When stored in an IEEE-754double, it falls between0x1.9999999999999*2-4
      and0x1.999999999999a*2-4
      . Rounding to nearest representable value results in0x1.999999999999a*2-4
      .

      Similarly, the decimal value0.3, which is between0x1.3333333333333*2-2
      and0x1.3333333333334*2-2
      is rounded to nearest and is stored as0x1.3333333333333*2-2
      .

      Run this code
      #include <iostream>#include <limits> auto print(std::float_round_style frs){switch(frs){casestd::round_indeterminate:return"Rounding style cannot be determined";casestd::round_toward_zero:return"Rounding toward zero";casestd::round_to_nearest:return"Rounding toward nearest representable value";casestd::round_toward_infinity:return"Rounding toward positive infinity";casestd::round_toward_neg_infinity:return"Rounding toward negative infinity";}return"unknown round style";} int main(){std::cout<<std::hexfloat<<"The decimal 0.1 is stored in a double as "<<0.1<<'\n'<<"The decimal 0.3 is stored in a double as "<<0.3<<'\n'<< print(std::numeric_limits<double>::round_style)<<'\n';}

      Output:

      The decimal 0.1 is stored in a double as 0x1.999999999999ap-4The decimal 0.3 is stored in a double as 0x1.3333333333333p-2Rounding toward nearest representable value

      [edit]See also

      indicates floating-point rounding modes
      (enum)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/types/numeric_limits/round_style&oldid=148581"

      [8]ページ先頭

      ©2009-2025 Movatter.jp