J'essaie d'obtenir le double long d'un tableau.Utiliser strtol pour obtenir un double long en C++
long double num;
char * pEnd;
char line[] = {5,0,2,5,2,2,5,4,5,.,5,6,6};
num = strtold(line1, &pEnd);
Pour une raison quelconque le num je reçois est arrondi à 502522545,6 Je suis tout à fait nouveau pour C++ est donc quelque chose que je fais mal? Que faut-il faire pour obtenir le nombre entier dans le num au lieu de l'arrondi?
Merci pour votre aide !!!
Désolé c'est mon premier post ici =)
donc l'intégralité du code du programme est le suivant:
class Number
{
private:
long double num ;
char line[19], line2[19];
int i, k;
public:
Number()
{}
void getData()
{
i = 0;
char ch= 'a';
cout << "\nPlease provide me with the number: ";
while ((ch = _getche()) != '\r')
{
line[i] = ch;
line2[i] = ch;
i++;
}
}
void printData() const
{
cout << endl;
cout << "Printing like an Array: ";
for (int j = 0; j < i; j++)
{
cout << line[j];
}
cout << "\nModified Array is: ";
for (int j = 0; j < (i-k); j++)
{
cout << line2[j];
}
cout << "\nTHe long Double is: " << num;
}
void getLong()
{
char * pEnd;
k = 1;
for (int j = 0; j < i; j++)
{
if (line2[j+k] == ',')
{
k++;
line2[j] = line2[j + k];
}
line2[j] = line2[j + k];
}
line2[i -k] = line2[19];
num = strtold(line2, &pEnd);
}
};
int main()
{
Number num;
char ch = 'a';
while (ch != 'n')
{
num.getData();
num.getLong();
num.printData();
cout << "\nWould you like to enter another number ? (y/n)";
cin >> ch;
}
return 0;
}
L'idée est que le nombre entré est dans le format suivant (50,555,355.67 $) ou tout autre nombre. Le programme supprime alors tous les signes à part des nombres et "." Puis j'ai essayé d'obtenir le long double num d'un tableau. Si vous exécutez le programme, vous obtenez toujours le nombre arrondi de num.
Ce code C++ n'est pas valide. Qu'essayez-vous de faire? – tadman
Êtes-vous ** positif ** que c'est votre code? Je ne connais aucun compilateur qui accepterait cela. –
Vous pouvez ajouter un modificateur à sscanf pour lire les doubles longs. – Segmented