Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

168
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!