Präzise Konvertierung von Gleitkommazahlen in Zeichenfolgen mit angegebener Dezimalgenauigkeit
Konvertieren Sie in C eine Gleitkommazahl in eine Zeichenfolge mit bestimmter Genauigkeit und Dezimalstellen erfordern sorgfältige Überlegung. In diesem Leitfaden werden zwei gängige Lösungen untersucht: stringstream und die Funktion to_chars aus C 17.
Stringstream verwenden
Stringstream ist ein vielseitiges Tool zum Bearbeiten von Strings in C. Um einen Float mit einer bestimmten Genauigkeit in einen String umzuwandeln, können Stream-Manipulatoren angewendet werden:
#include
#include
double pi = 3.14159265359;
std::stringstream stream;
stream - std::fixed stellt sicher, dass die Zahl in Festkommaschreibweise dargestellt wird, mit einem Dezimalpunkt und einer angegebenen Anzahl von Ziffern.
- std::setprecision(2) steuert die Anzahl der anzuzeigenden Dezimalstellen.
Verwenden der to_chars-Funktion (C 17 und höher)
Für Für technischere Zwecke wie das Schreiben von Daten in XML oder JSON bietet die in C 17 eingeführte Funktion to_chars eine prägnante Lösung:
#include
#include
double pi = 3.14159265359;
std::array buffer;
auto [ptr, ec] = std::to_chars(buffer.data(), buffer.data() buffer.size(), pi,
std::chars_format::fixed, 2);
if (ec == std::errc{}) {
std::string s(buffer.data(), ptr);
}
else {
// Error handling
}
- Die Funktion std::to_chars benötigt einen Puffer (in std::array-Form), eine Zahl und eine Formatspezifikation (in diesem Fall std::chars_format::fixed mit 2 Dezimalstellen). Stellen).
- Wenn die Konvertierung erfolgreich ist, wird die resultierende Zeichenfolge aus dem Puffer erstellt.
Mit diesen Techniken können Sie Gleitkommazahlen in C mit präziser Kontrolle in Zeichenfolgen konvertieren die Anzahl der Dezimalstellen, um sicherzustellen, dass Ihre Daten genau und Ihren Anforderungen entsprechend dargestellt werden.
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