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

Barbara Streisand
Lepaskan: 2024-10-24 06:08:02
asal
210 orang telah melayarinya

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();
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan