Heim  >  Artikel  >  Backend-Entwicklung  >  Wie steuere ich die Genauigkeit der Float-zu-String-Konvertierung und die Dezimalstellen in C?

Wie steuere ich die Genauigkeit der Float-zu-String-Konvertierung und die Dezimalstellen in C?

Barbara Streisand
Barbara StreisandOriginal
2024-10-24 06:08:02134Durchsuche

How to Control Float-to-String Conversion Precision and Decimal Digits in C  ?

Ändern der Genauigkeit und der Dezimalstellen bei der Konvertierung von Gleitkommazahlen in Zeichenfolgen in C

Beim Konvertieren einer Gleitkommazahl in eine Zeichenfolge in C ist es häufig erforderlich, die Präzision und zu steuern Anzahl der angezeigten Dezimalstellen. So kann dies erreicht werden:

Verwenden von Stringstream

Ein gängiger Ansatz ist die Verwendung eines Stringstreams:

<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();

Das Fixed-Flag stellt sicher, dass eine Festkomma-Notation vorliegt verwendet, während setprecision(2) angibt, dass nur zwei Dezimalstellen angezeigt werden sollen.

Konvertierung für technische Zwecke

Für technische Zwecke, wie zum Beispiel das Speichern von Daten in XML oder JSON, führt C 17 das ein to_chars-Funktionsfamilie:

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

Hier gewährleistet std::chars_format::fixed die Festkommaschreibweise und 2 gibt die Anzahl der Dezimalstellen an.

Das obige ist der detaillierte Inhalt vonWie steuere ich die Genauigkeit der Float-zu-String-Konvertierung und die Dezimalstellen in C?. 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