首頁  >  文章  >  後端開發  >  在處理非數字輸入時,如何在 C 中將字串轉換為雙精確度值?

在處理非數字輸入時,如何在 C 中將字串轉換為雙精確度值?

Patricia Arquette
Patricia Arquette原創
2024-10-31 08:07:29859瀏覽

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

在C 中將字符串轉換為Double 值

問題陳述:

轉換字串表示形式將​​數字轉換為浮點雙精確值。如果字串不是數字,則傳回 0。

解決方案:

要將字串轉換為C 中的double 值,可以使用std::stod 函數,它接受一個字串參數並將其轉換為雙精度型。但是,對於非數字字串,此函數不會傳回 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 從字串中提取雙精度值。如果提取失敗,則傳回 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 中將字串轉換為雙精確度值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn