std::trunc, std::truncf, std::truncl
Definido en el archivo de encabezado <cmath> | ||
float trunc (float arg ); | (1) | (desde C++11) (constexpr since C++23) |
float truncf(float arg ); | (2) | (desde C++11) (constexpr since C++23) |
double trunc (double arg ); | (3) | (desde C++11) (constexpr since C++23) |
longdouble trunc (longdouble arg ); | (4) | (desde C++11) (constexpr since C++23) |
longdouble truncl(longdouble arg ); | (5) | (desde C++11) (constexpr since C++23) |
double trunc ( TipoEntero arg ); | (6) | (desde C++11) (constexpr since C++23) |
arg
. Contenido |
[editar]Parámetros
arg | - | Valor de punto flotante. |
[editar]Valor de retorno
Si no se producen errores, se devuelve el valor entero más cercano no mayor en magnitud que arg
(es decir, arg
redondeado a cero).
[editar]Manejo de errores
Los errores se informan como se especifica en math_errhandling.
Si la implementación admite la aritmética de punto flotante IEEE (IEC 60559),
- El modo de redondeo actual no tiene efecto.
- Si
arg
es +∞, se devuelve +∞. - Si
arg
es -∞, se devuelve -∞. - Si
arg
es +0, se devuelve +0. - Si
arg
es -0, se devuelve -0. - Si
arg
es NaN, se devuelve NaN.
[editar]Notas
Se puede generar FE_INEXACT (pero no es obligatorio) por std::trunc
al redondear un valor finito no entero.
Los valores de punto flotante representables más grandes son enteros exactos en todos los formatos de punto flotante estándar, por lo que std::trunc
nunca se desborda por sí solo; sin embargo, el resultado puede desbordar cualquier tipo de entero (incluido std::intmax_t), cuando se almacena en una variable entera.
La conversión implícita de tipos de punto flotante a entero también se redondea a cero, pero está limitada en los valores que pueden representarse por el tipo de destino.
[editar]Ejemplo
#include <cmath>#include <iostream>#include <initializer_list> int main(){constauto data =std::initializer_list<double>{+2.7, -2.9, +0.7, -0.9, +0.0, 0.0, -INFINITY, +INFINITY, -NAN, +NAN}; std::cout<<std::showpos;for(doubleconst x : data){std::cout<<"trunc("<< x <<") == "<< std::trunc(x)<<'\n';}}
Posible salida:
trunc(+2.7) == +2 trunc(-2.9) == -2 trunc(+0.7) == +0 trunc(-0.9) == -0 trunc(+0) == +0 trunc(+0) == +0 trunc(-inf) == -inf trunc(+inf) == +inf trunc(-nan) == -nan trunc(+nan) == +nan
[editar]Véase también
(C++11)(C++11) | Entero más cercano no mayor que el valor dado (función) |
(C++11)(C++11) | Entero más cercano entero no menor que el valor dado. (función) |
(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11) | Entero más cercano, redondeando alejándose de cero en los casos intermedios (función) |
Documentación de C para trunc |