2017-04-02 3 views
0

Bonjour je voudrais compter le nombre il y a dans un nombre je veux dire si j'ai ce double 78.23 les fonctions retourneraient 4 si j'ai 145.123 j'en aurais 6. Est-il possible de le faire avec C++? Merci!Comptez la longueur d'un nombre

+4

Si vous utilisez spécifiquement des doubles, vous aurez des problèmes avec des nombres non directement représentables en base 2. Un exemple en base 10 serait 1/3 - quelle serait la longueur de ce nombre? – Shaggi

Répondre

0

la manière facile de le faire est de simplement entrer le numéro comme une chaîne et utiliser .length()

#include <iostream> 
#include <string> 
#include <conio.h> 
using namespace std; int main() { 

string number; 

cout << "Enter a number: "; 
cin >> number; 

cout << "length is " << number.length(); 

_getch(); 
return 0; 

si vous en avez besoin strictement d'être avec des entiers et double alors vous devrez créer un algorithme mathématique.

+0

Et si c'était un double? Ça va compter les points aussi ... – 0xDEFACED

1

La précision - dans le sens où vous l'interrogez - est autant une propriété du flux de sortie, que de la valeur en sortie. En supposant que vous produisez en utilisant un C++ ostream (ofstream, ostrstream, etc), recherchez les propriétés ios_base::precision, ios_base::width, etc ou un manipulateur de flux comme setprecision. Si vous utilisez l'E/S C (sprintf(), etc.), la réponse dépend des modificateurs spécifiés pour le format %f. Donc la méthode pour obtenir la valeur que vous cherchez serait probablement de sortir la valeur en utilisant votre méthode choisie (manipulateurs de flux, spécificateurs de format) à une chaîne. Ensuite, calculez la longueur de la chaîne, soustrayez-en une pour chaque 0, le point décimal, etc.

De même, les variables à virgule flottante avec une mantisse de base 2 (qui inclut la plupart des représentations en virgule flottante du monde réel) ne peuvent pas représenter exactement valeur qui n'est pas une somme de puissances entières de 0.5 (la valeur stockée est une approximation). Entre autres choses, cela signifie qu'une variable à virgule flottante ne peut pas représenter exactement des valeurs telles que 0.1 et 0.01. Les valeurs de vos échantillons 78.23 et 145.123 ne peuvent pas être représentées exactement à l'aide de variables à virgule flottante. Ce qui fait partie de la raison pour laquelle la réponse à des questions comme la vôtre dépend de la façon dont la variable est produite, autant que la valeur elle-même.