首頁 > 後端開發 > C++ > 主體

在 C 中如何將浮點數精確轉換為具有指定十進位精確度的字串?

Linda Hamilton
發布: 2024-10-24 06:20:30
原創
352 人瀏覽過

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

以指定十進位精確度將浮點數精確轉換為字串

在C 中,將浮點數轉換為具有特定精確度的字元串,並小數位需要仔細考慮。本指南探討了兩種常見的解:stringstream 和 C 17 中的 to_chars 函數。

使用 Stringstream

Stringstream 是用於在 C 中操作字串的多功能工具。要將浮點轉換為具有指定精確度的字串,可以應用流操縱器:

<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 確保數字以定點表示法表示,帶有小數點並指定位數。
  • std::set precision(2) 控制要顯示的小數位數。

使用to_chars 函數(C 17 以上)

出於更多技術目的,例如將資料寫入XML 或JSON,C 17 中引入的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>
登入後複製
  • std::to_chars函數接受一個緩衝區(以std::array 形式)、一個數字和一個格式規範(在本例中為std::chars_format::fixed 保留2 位小數)。
  • 如果轉換成功,產生的字串是從緩衝區建構出來的。

透過使用這些技術,您可以將浮點數轉換為 C 中的字串,並精確控制小數位數,確保您的資料準確且以符合您的要求。

以上是在 C 中如何將浮點數精確轉換為具有指定十進位精確度的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!