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

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

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 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!