std:: trunc, std:: truncf, std:: truncl
|
Definido en el encabezado
<cmath>
|
||
| (1) | ||
|
float
trunc
(
float
num
)
;
double
trunc
(
double
num
)
;
|
(hasta C++23) | |
|
constexpr
/*floating-point-type*/
trunc ( /*floating-point-type*/ num ) ; |
(desde C++23) | |
|
float
truncf
(
float
num
)
;
|
(2) |
(desde C++11)
(constexpr desde C++23) |
|
long
double
truncl
(
long
double
num
)
;
|
(3) |
(desde C++11)
(constexpr desde C++23) |
|
Sobrecarga SIMD
(desde C++26)
|
||
|
Definido en el encabezado
<simd>
|
||
|
template
<
/*math-floating-point*/
V
>
constexpr
/*deduced-simd-t*/
<
V
>
|
(S) | (desde C++26) |
|
Sobrecargas adicionales
(desde C++11)
|
||
|
Definido en el encabezado
<cmath>
|
||
|
template
<
class
Integer
>
double trunc ( Integer num ) ; |
(A) | (constexpr desde C++23) |
std::trunc
para todos los tipos de punto flotante no calificados cv como el tipo del parámetro.
(desde C++23)
|
S)
La sobrecarga SIMD realiza un
std::trunc
elemento por elemento en
v_num
.
|
(desde C++26) |
|
A)
Se proporcionan sobrecargas adicionales para todos los tipos enteros, los cuales son tratados como
double
.
|
(since C++11) |
Contenidos |
Parámetros
| num | - | valor de punto flotante o entero |
Valor de retorno
Si no ocurren errores, se devuelve el valor entero más cercano no mayor en magnitud que num (en otras palabras, num redondeado hacia cero).
Manejo de errores
Los errores se reportan como se especifica en math_errhandling .
Si la implementación soporta aritmética de punto flotante IEEE (IEC 60559),
- El modo de redondeo actual no tiene efecto .
- Si num es ±∞, se devuelve sin modificaciones.
- Si num es ±0, se devuelve sin modificaciones.
- Si num es NaN, se devuelve NaN.
Notas
FE_INEXACT puede (pero no está obligado a) activarse al truncar un valor finito no entero.
Los valores de punto flotante más grandes representables son enteros exactos en todos los formatos estándar de punto flotante, por lo que esta función nunca desborda por sí misma; sin embargo, el resultado puede desbordar cualquier tipo entero (incluyendo std::intmax_t ), cuando se almacena en una variable entera.
La conversión implícita de tipos de punto flotante a tipos enteros también redondea hacia cero, pero está limitada a los valores que pueden ser representados por el tipo de destino.
Las sobrecargas adicionales no requieren ser proporcionadas exactamente como (A) . Solo necesitan ser suficientes para garantizar que para su argumento num de tipo entero, std :: trunc ( num ) tenga el mismo efecto que std :: trunc ( static_cast < double > ( num ) ) .
Ejemplo
#include <cmath> #include <initializer_list> #include <iostream> int main() { const auto 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 (double const x : data) std::cout << "trunc(" << x << ") == " << std::trunc(x) << '\n'; }
Salida posible:
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
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 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 casos intermedios
(función) |
|
Documentación C
para
trunc
|
|