Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::numeri...round_style(3)  C++ Standard Libary std::numeri...round_style(3)

NAME
       std::numeric_limits::round_style	- std::numeric_limits::round_style

Synopsis
	  static const std::float_round_style round_style;	(until C++11)
	  static constexpr std::float_round_style round_style;	(since C++11)

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

Standard specializations
	  T				  value	     of	     std::numeric_lim-
       its<T>::round_style
	  /* non-specialized */	     std::round_toward_zero
	  bool			     std::round_toward_zero
	  char			     std::round_toward_zero
	  signed char		     std::round_toward_zero
	  unsigned char		     std::round_toward_zero
	  wchar_t		     std::round_toward_zero
	  char8_t (C++20)	     std::round_toward_zero
	  char16_t (C++11)	     std::round_toward_zero
	  char32_t (C++11)	     std::round_toward_zero
	  short			     std::round_toward_zero
	  unsigned short	     std::round_toward_zero
	  int			     std::round_toward_zero
	  unsigned int		     std::round_toward_zero
	  long			     std::round_toward_zero
	  unsigned long		     std::round_toward_zero
	  long long (C++11)	     std::round_toward_zero
	  unsigned long	long (C++11) std::round_toward_zero
	  float			     usually std::round_to_nearest
	  double		     usually std::round_to_nearest
	  long double		     usually std::round_to_nearest

Notes
	  These	 values	 are  constants, and do	not reflect the	changes	to the
       rounding	made by
	  std::fesetround. The changed values may be obtained from  FLT_ROUNDS
       or
	  std::fegetround.

Example
	  The  decimal	value  0.1 cannot be represented by a binary floating-
       point type. When
	  stored in an IEEE-754	double,	it falls between 0x1.9999999999999*2-4
	  and 0x1.999999999999a*2-4
	  .   Rounding	 to   nearest	representable	value	 results    in
       0x1.999999999999a*2-4
	  .

	  Similarly,	the    decimal	  value	   0.3,	  which	  is   between
       0x1.3333333333333*2-2
	  and 0x1.3333333333334*2-2
	  is rounded to	nearest	and is stored as 0x1.3333333333333*2-2
	  .

       // Run this code

	#include <iostream>
	#include <limits>
	int main()
	{
	    std::cout << std::hexfloat << "The decimal 0.1 is stored in	a dou-
       ble as "
		      << 0.1 <<	'\n'
		      << "The decimal 0.3 is stored in a double	as "
		      << 0.3 <<	'\n'
		      << "The rounding style is	" <<  std::numeric_limits<dou-
       ble>::round_style << '\n';
	}

Output:
	The decimal 0.1	is stored in a double as 0x1.999999999999ap-4
	The decimal 0.3	is stored in a double as 0x1.3333333333333p-2
	The rounding style is 1

See also
	  float_round_style indicates floating-point rounding modes
			    (enum)

http://cppreference.com		  2022.07.31	  std::numeri...round_style(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::numeric_limits::round_style&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help