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

Linda Hamilton
リリース: 2024-10-24 06:20:30
オリジナル
415 人が閲覧しました

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

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

C では、浮動小数点数を特定の精度で文字列に変換し、 10 進数については注意が必要です。このガイドでは、stringstream と C 17 の to_chars 関数という 2 つの一般的なソリューションについて説明します。

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::setprecision(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 形式)、数値、および形式指定 (この場合、小数点以下 2 桁の std::chars_format::fixed) を受け取ります。
  • 変換が成功した場合、結果の文字列はバッファから構築されます。

これらの手法を採用すると、10 進数の桁数を正確に制御しながら浮動小数点数を C の文字列に変換でき、データが正確に表現されるようになります。あなたの要件に従ってください。

以上がC で指定された 10 進精度で浮動小数点数を文字列に正確に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート