Maison > développement back-end > C++ > Comment puis-je convertir des chaînes en valeurs doubles en C tout en gérant des entrées non numériques ?

Comment puis-je convertir des chaînes en valeurs doubles en C tout en gérant des entrées non numériques ?

Patricia Arquette
Libérer: 2024-10-31 08:07:29
original
968 Les gens l'ont consulté

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

Conversion de chaînes en valeurs doubles en C

Énoncé du problème :

Convertir une représentation sous forme de chaîne d'un nombre en une valeur double à virgule flottante. Si la chaîne n'est pas numérique, renvoyez 0.

Solution :

Pour convertir une chaîne en valeur double en C , vous pouvez utiliser la fonction std::stod , qui prend un paramètre de chaîne et le convertit en double. Cependant, cette fonction ne renvoie pas 0 pour les chaînes non numériques.

Fonction personnalisée pour la gestion non numérique :

Pour résoudre ce problème, nous pouvons créer une fonction personnalisée qui renvoie 0 pour les chaînes non numériques. Voici une implémentation :

<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>
Copier après la connexion

Cette fonction utilise std::istringstream pour extraire la valeur double de la chaîne. Si l'extraction échoue, elle renvoie 0.

Exemples d'utilisation :

Voici quelques exemples d'utilisation de la fonction 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>
Copier après la connexion

Remarque concernant les zéros non numériques :

Il est important de noter que cette fonction ne peut pas distinguer toutes les chaînes non numériques des zéros. Par exemple, les chaînes suivantes sont toutes considérées comme des zéros selon cette implémentation :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal