Heim  >  Artikel  >  Backend-Entwicklung  >  Wie konvertiert man in C Floats präzise in Strings mit einer bestimmten Dezimalgenauigkeit?

Wie konvertiert man in C Floats präzise in Strings mit einer bestimmten Dezimalgenauigkeit?

Linda Hamilton
Linda HamiltonOriginal
2024-10-24 06:20:30353Durchsuche

How Do You Precisely Convert Floats to Strings with Specified Decimal Precision in C  ?

Präzise Konvertierung von Gleitkommazahlen in Zeichenfolgen mit angegebener Dezimalgenauigkeit

Konvertieren einer Gleitkommazahl in eine Zeichenfolge mit bestimmter Genauigkeit und in C 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 Gleitkommawert mit einer bestimmten Genauigkeit in einen String umzuwandeln, können Stream-Manipulatoren angewendet werden:

<code class="cpp">#include <iomanip>
#include <sstream>

double pi = 3.14159265359;
std::stringstream stream;
stream << std::fixed << std::setprecision(2) << pi;
std::string s = stream.str();
  • std::fixed stellt sicher, dass die Zahl in Festkommaschreibweise, mit einem Dezimalpunkt und spezifiziert dargestellt wird Anzahl der Ziffern.
  • std::setprecision(2) steuert die Anzahl der anzuzeigenden Dezimalstellen.

Verwendung der to_chars-Funktion (C 17 und höher)

Für eher technische Zwecke, wie das Schreiben von Daten in XML oder JSON, bietet die in C 17 eingeführte to_chars-Funktion eine prägnante Lösung:

<code class="cpp">#include <array>
#include <charconv>

double pi = 3.14159265359;
std::array<char, 128> 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
}</code>
  • Der std::to_chars Die Funktion benötigt einen Puffer (in std::array-Form), eine Zahl und eine Formatangabe (in diesem Fall std::chars_format::fixed mit 2 Dezimalstellen).
  • Wenn die Konvertierung erfolgreich ist, Die resultierende Zeichenfolge wird aus dem Puffer erstellt.

Durch den Einsatz dieser Techniken können Sie Gleitkommazahlen in Zeichenfolgen in C mit präziser Kontrolle über die Anzahl der Dezimalstellen konvertieren und so sicherstellen, dass Ihre Daten genau und korrekt dargestellt werden entsprechend Ihren Anforderungen.

Das obige ist der detaillierte Inhalt vonWie konvertiert man in C Floats präzise in Strings mit einer bestimmten Dezimalgenauigkeit?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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