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

147
Vistas
¿Es siempre seguro negar un número de coma flotante?

Considerar:

 double f = foo(); double g = -f;

donde foo() puede devolver cualquier cosa que se asigne a f .

es double g = -f; seguro en C y C++? Para los tipos IEEE 754, obviamente lo es, pero C y C ++ no restringen la implementación de punto flotante a eso (a diferencia de Java).

Si es seguro, entonces -g siempre compararía true con foo() ?

(Lo anterior no es cierto para int en complemento a 2).

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

0

Los tipos flotantes están definidos por §5.2.4.2.2 del estándar C (borrador N1570 al menos):

Las características de los tipos flotantes se definen en términos de un modelo que describe una representación de números y valores de punto flotante que proporcionan información sobre la aritmética de punto flotante de una implementación.21) Los siguientes parámetros se utilizan para definir el modelo para cada punto flotante tipo:

  • signo s (±1)
  • b base o raíz de representación exponencial (un entero > 1)
  • e exponente (un número entero entre un mínimo emin y un máximo emax)
  • precisión p (el número de dígitos de base b en la significancia)
  • fk enteros no negativos menores que b (los dígitos significativos)

Un número de coma flotante (x) se define mediante el siguiente modelo:

Entonces, sí, esa expresión es algo segura , excepto en el caso en que foo devuelva uno de los "otros tipos de números de coma flotante" no especificados por el estándar:

Además de los números de punto flotante normalizados (f1 > 0 si x ≠ 0), los tipos flotantes pueden contener otros tipos de números de punto flotante, como números de punto flotante subnormales (x ≠ 0, e = emin , f1 = 0) y números de punto flotante no normalizados (x ≠ 0, e > emin, f1 = 0), y valores que no son números de punto flotante, como infinitos y NaN.

y:

Una implementación puede dar un signo a cero y valores que no son números de punto flotante (como infinitos y NaN) o puede dejarlos sin firmar.

Probablemente haya otras advertencias para esto, pero el estándar incluye bastantes detalles sobre las características de estos tipos. Puede leer todo sobre ellos en este borrador disponible públicamente .

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