Heim > Backend-Entwicklung > C++ > Verfügt C/C über eine Standardvorzeichenfunktion für Gleitkommazahlen?

Verfügt C/C über eine Standardvorzeichenfunktion für Gleitkommazahlen?

Susan Sarandon
Freigeben: 2024-12-16 12:58:11
Original
938 Leute haben es durchsucht

Does C/C   Have a Standard Sign Function for Floating-Point Numbers?

Gibt es eine Standardzeichenfunktion in C/C?

Frage:

I Ich suche eine Funktion, die -1 für negative Zahlen und 1 für positive Zahlen ausgibt. Trotz ihrer Einfachheit vermute ich, dass diese Funktionalität irgendwo in einer Standardbibliothek verfügbar ist. Konkret benötige ich eine Funktion, die mit Float-Datentypen arbeitet.

Antwort:

Ja, es gibt eine Standard-C-Funktion, die diesem Zweck dient, bekannt als Signum. Es ist jedoch wichtig zu beachten, dass diese Funktion typsicher ist, was bedeutet, dass sie mit verschiedenen Datentypen arbeiten kann, nicht nur mit Floats. Hier ist eine generische Implementierung von Signum:

template <typename T>
int sgn(T val) {
    return (T(0) < val) - (val < T(0));
}
Nach dem Login kopieren

Diese Funktion bietet mehrere Vorteile gegenüber benutzerdefinierten Implementierungen:

  • Genaue Signum-Implementierung: Sie gibt -1 für negativ aus Zahlen, 0 für Null und 1 für positive Zahlen.
  • Typ Vielseitigkeit: Es kann mit Ganzzahlen, Gleitkommazahlen, Doppelzahlen und verschiedenen anderen Datentypen arbeiten.
  • Effizienz: Die verzweigungslose Implementierung nutzt Compiler-Optimierung für außergewöhnliche Ergebnisse Leistung.

Verwendung:

int sign = sgn(-1.5); // -1
sign = sgn(0.0);      // 0
sign = sgn(3.14);     // 1
Nach dem Login kopieren

Vorbehalte:

  • Kompilierungszeit : Als Vorlage kann es unter Umständen zu einer längeren Kompilierungszeit kommen Szenarien.
  • Unkonventionelle Syntax: Einige bevorzugen möglicherweise die Verwendung von Copysign, da es sich um eine Standardbibliotheksfunktion handelt, auch wenn sie die Sign-Funktion nicht genau implementiert.
  • Warnungsauslösung: Bei Verwendung mit vorzeichenlosen Typen kann die Warnung „-Wtype-limits“ in GCC ausgelöst werden. Um dieses Problem zu lösen, können Sie eine Vorlagenspezialisierung mit Überladungen verwenden.

Zusammenfassend lässt sich sagen, dass die Signum-Funktion eine vielseitige und effiziente Lösung zum Bestimmen des Vorzeichens einer Zahl in C bietet. Obwohl es für Floats in der Standardbibliothek möglicherweise nicht direkt verfügbar ist, ermöglicht seine typsichere Implementierung die Verwendung auf einer Vielzahl von Datentypen mit bemerkenswerter Genauigkeit.

Das obige ist der detaillierte Inhalt vonVerfügt C/C über eine Standardvorzeichenfunktion für Gleitkommazahlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage