「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > C++ で指定された 10 進精度で浮動小数点を文字列に正確に変換するにはどうすればよいですか?

C++ で指定された 10 進精度で浮動小数点を文字列に正確に変換するにはどうすればよいですか?

2024 年 11 月 18 日に公開
ブラウズ:164

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

指定された 10 進精度での浮動小数点数から文字列への正確な変換

C では、浮動小数点数を特定の精度で文字列に変換し、 10 進数については注意が必要です。このガイドでは、stringstream と C の to_chars 関数という 2 つの一般的なソリューションについて説明します。指定された精度で float を文字列に変換するには、ストリーム マニピュレータを適用できます:

#include #include 二重円周率 = 3.14159265359; std::stringstream ストリーム; ストリーム

std::fixed は、数値が小数点と指定された桁数を使用して固定小数点表記で表現されることを保証します。

#include 
#include 

double pi = 3.14159265359;
std::stringstream stream;
stream 
  • to_chars 関数の使用 (C 17 以降)
  • Forデータを XML や JSON に書き込むなど、より技術的な目的では、C 17 で導入された to_chars 関数が簡潔な解決策を提供します。

#include #include 二重円周率 = 3.14159265359; std::array バッファ; 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); } それ以外 { // エラー処理 }

std::to_chars 関数は、バッファー (std::array 形式)、数値、および形式指定 (この場合、10 進数 2 桁の std::chars_format::fixed) を受け取ります。

#include 
#include 

double pi = 3.14159265359;
std::array 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
}
    これらの手法を採用することで、C で浮動小数点を正確に制御しながら文字列に変換できます。小数点以下の桁数を指定し、データが要件に従って正確に表現されるようにします。
リリースステートメント この記事は次の場所に転載されています: 1729721222 権利侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3