ホームページ  >  記事  >  バックエンド開発  >  C で数値以外の入力を処理しながら文字列を Double 値に変換するにはどうすればよいですか?

C で数値以外の入力を処理しながら文字列を Double 値に変換するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-31 08:07:29931ブラウズ

How Can I Convert Strings to Double Values in C   while Handling Non-Numerical Inputs?

C で文字列を Double 値に変換する

問題文:

文字列表現を変換する数値を浮動小数点の double 値に変換します。文字列が数値でない場合は、0 を返します。

解決策:

C で文字列を double 値に変換するには、 std::stod 関数を使用できます。 、文字列パラメータを受け取り、それを double に変換します。ただし、この関数は数値以外の文字列に対して 0 を返しません。

非数値処理用のカスタム関数:

これに対処するために、カスタム関数を作成できます。数値以外の文字列の場合は 0 を返します。実装は次のとおりです。

<code class="cpp">#include <sstream>

double string_to_double(const std::string& s) {
  std::istringstream i(s);
  double x;
  if (!(i >> x)) {
    return 0;
  }
  return x;
}</code>

この関数は std::istringstream を使用して文字列から double 値を抽出します。抽出が失敗した場合は、0 が返されます。

使用例:

string_to_double 関数の使用例をいくつか示します:

<code class="cpp">assert(0.5 == string_to_double("0.5"));
assert(0.5 == string_to_double("0.5 "));
assert(0.5 == string_to_double("0.5a"));
assert(0 == string_to_double("foobar"));</code>

非数値ゼロに関する注意:

この関数は、すべての非数値文字列をゼロから区別できないことに注意することが重要です。たとえば、次の文字列は、この実装に従ってすべてゼロとみなされます:

  • "0"
  • "0."
  • "0.0"
  • " 0"
  • "-0"

以上がC で数値以外の入力を処理しながら文字列を Double 値に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。