Espacios de nombres
Variantes
Acciones

std::trunc, std::truncf, std::truncl

De cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
Funciones matemáticas comunes
Funciones
Operaciones básicas
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
Funciones exponenciales
(C++11)
(C++11)
(C++11)
(C++11)
Funciones de potencias
(C++11)
(C++11)
Funciones trigonométricas e hiperbólicas
(C++11)
(C++11)
(C++11)
Funciones de error y gamma
(C++11)
(C++11)
(C++11)
(C++11)
Operaciones de punto flotante del entero más cercano
(C++11)(C++11)(C++11)
trunc
(C++11)
(C++11)
(C++11)(C++11)(C++11)
Funciones de manipulación de punto flotante
(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)
(C++11)
Clasificación/comparación
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Constantes de macro
(C++11)(C++11)(C++11)(C++11)(C++11)
 
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)
long double trunc ( long double arg );
(4) (desde C++11)
(constexpr since C++23)
long double truncl( long double arg );
(5) (desde C++11)
(constexpr since C++23)
double      trunc ( TipoEntero arg );
(6) (desde C++11)
(constexpr since C++23)
1-5) Calcula el entero más cercano no mayor en magnitud que arg.
6) Un conjunto de sobrecargas o una plantilla de función que acepta un argumento de cualquier tipo entero. Equivalente a (3) (el argumento se convierte a double).

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).

Valor de retorno
math-trunc.svg
Argumento


[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()
{
    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';
    }
}

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) [editar]
(C++11)(C++11)
Entero más cercano entero no menor que el valor dado.
(función) [editar]
(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) [editar]