Comment analyser manuellement un nombre à virgule flottante à partir d'une chaîne

Bien sûr, la plupart des langues ont des fonctions de la bibliothèque, mais supposons que je veux faire moi-même.

Supposons que le flotteur est donné comme en C ou Java programme (sauf pour le 'f' ou 'd' suffixe), par exemple "4.2e1", ".42e2" ou tout simplement "42". En général, nous avons la "partie entière" avant le point décimal, la "fraction" après la virgule, et le "exposant". Tous les trois sont des nombres entiers.

Il est facile de trouver et de traiter les chiffres individuels, mais comment composez-vous en une valeur de type float ou double sans perdre de précision?

Je suis en train de penser de la multiplication de la partie entière avec 10^n, où n est le nombre de chiffres dans la partie décimale, puis en ajoutant la partie fractionnaire de la partie entière et la soustraction n de l'exposant. Cela devient 4.2e1 en 42e0, par exemple. Ensuite, j'ai pu utiliser le pow fonction pour calculer 10^exposant et multiplier le résultat avec la nouvelle partie entière. La question est, est ce que cette méthode garantit un maximum de précision tout au long de?

Des idées sur ce point?

InformationsquelleAutor Thomas | 2008-09-17