Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

170
Vistas
¿Hay alguna definición de cómo se redondean los valores de punto flotante evaluados en tiempo de compilación?

¿Existe alguna definición de cómo los valores de punto flotante evaluados en tiempo de compilación se redondean en C o C++? Fe cuando tengo double d = 1.0 / 3.0; ? Es decir, qué tipo de redondeo se realiza en tiempo de compilación.

¿Y hay una definición de cuál es el modo de redondeo predeterminado para un subproceso en tiempo de ejecución (C99's/C++11's fegetround() / fesetround() )?

¿Y el redondeo a valores enteros también está incluido en los últimos parámetros de configuración? Soy consciente de nearbyint() , pero esto se especifica para vincularse a los parámetros de redondeo que se pueden establecer mediante fesetround() . Lo que me preocupa es la conversión directa a un número entero.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En ambas especificaciones (C17 y C++20), el redondeo del tiempo de compilación está definido por la implementación.

En la especificación de C++, esto se especifica en lex.fcon , que dice

Si el valor escalado no está en el rango de valores representables para su tipo, el programa está mal formado. De lo contrario, el valor de un literal de punto flotante es el valor escalado si es representable, de lo contrario, el valor representable más grande o más pequeño más cercano al valor escalado, elegido de una manera definida por la implementación.

La especificación C tiene un lenguaje similar (cita tomada de N2176, borrador final C17):

el resultado es el valor representable más cercano, o el valor representable más grande o más pequeño inmediatamente adyacente al valor representable más cercano, elegido de una manera definida por la implementación.

También recomienda que la conversión del tiempo de traducción coincida con la conversión del tiempo de ejecución de las funciones de la biblioteca (como strtod ), pero no es obligatorio. Ver la descripción de los valores representables .

Las conversiones de valores de coma flotante a enteros se especifican en ambos para truncar (redondear hacia 0 descartando la parte fraccionaria).

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda