Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengawal Ketepatan Penukaran Terapung-ke-String dan Digit Perpuluhan dalam C ?

Bagaimana untuk Mengawal Ketepatan Penukaran Terapung-ke-String dan Digit Perpuluhan dalam C ?

Barbara Streisand
Barbara Streisandasal
2024-10-24 06:08:02134semak imbas

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

Mengubah suai Ketepatan Penukaran Apung-ke-Rentetan dan Digit Perpuluhan dalam C

Apabila menukar apungan kepada rentetan dalam C , selalunya perlu mengawal ketepatan dan bilangan digit perpuluhan yang dipaparkan. Begini cara ini boleh dicapai:

Menggunakan Stringstream

Pendekatan biasa ialah menggunakan stringstream:

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

Bendera tetap memastikan bahawa notasi titik tetap adalah digunakan, manakala setprecision(2) menentukan bahawa hanya dua digit perpuluhan harus dipaparkan.

Penukaran untuk Tujuan Teknikal

Untuk tujuan teknikal, seperti menyimpan data dalam XML atau JSON, C 17 memperkenalkan keluarga fungsi to_chars:

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

Di sini, std::chars_format::fixed memastikan tatatanda titik tetap dan 2 menentukan bilangan digit perpuluhan.

Atas ialah kandungan terperinci Bagaimana untuk Mengawal Ketepatan Penukaran Terapung-ke-String dan Digit Perpuluhan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn