„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie stellen Sie fest, ob ein C++-Compiler dem Gleitkomma-Standard IEEE 754 entspricht?

Wie stellen Sie fest, ob ein C++-Compiler dem Gleitkomma-Standard IEEE 754 entspricht?

Veröffentlicht am 19.11.2024
Durchsuche:878

How do you determine if a C   compiler conforms to the IEEE 754 floating point standard?

Überprüfung des IEEE 754-Gleitkomma-Standards in C

Die Feststellung, ob ein C-Compiler den IEEE 754-Gleitkomma-Standard einhält, erfolgt normalerweise durch eine Compilerdefinition. Die für C verwendete Technik lässt sich jedoch möglicherweise nicht direkt auf C anwenden.

C-spezifischer Ansatz

Glücklicherweise bietet C eine einfache Methode, um diese Prüfung mithilfe der numerischen_Limits durchzuführen class:

std::numeric_limits::is_iec559;

Dieser Ausdruck wird als wahr ausgewertet, wenn IEEE 754 vom Compiler verwendet wird, andernfalls als falsch. Eine ähnliche Prüfung kann für den Float-Typ durchgeführt werden:

std::numeric_limits::is_iec559;

Alternative Method

Als Alternative zum numeric_limits-Ansatz können Sie den zweiten Teil von Adams Antwort für C anpassen:

#include 

int main() {
  // Check for IEEE 754 compliance by checking for a finite number of float exponents.
  if (std::numeric_limits::max_exponent == std::numeric_limits::max()) {
    // Compiler uses IEEE 754.
  } else {
    // Compiler does not use IEEE 754.
  }
}

Dieser Ansatz basiert auf der Tatsache, dass IEEE 754 einen bestimmten Exponentenbereich für Gleitkommazahlen definiert. Wenn der maximale Exponent des Compilers mit der maximalen Größe einer Ganzzahl übereinstimmt, entspricht er wahrscheinlich IEEE 754.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3