Fonction ftoa

Soyez le premier à donner votre avis sur cette source.

Vue 10 111 fois - Téléchargée 403 fois

Description

Je crois qu'il n'existe pas de fonction pour mettre un flottant dans une chaîne à part sprintf qui marche quand elle veut bien, et qui nous oblige à utiliser la CRT (wsprintf n'accepte pas %f). C'est pourquoi j'ai écrit cette fonction qui est un peu plus rapide (a peine quand les parties entière et/ou décimale sont grandes) mais qui a besoin de beaucoup de données (les tableaux exp2Pos et exp2Neg). Elle est moins complete que sprintf (on se choisit pas la précision, pas d'arrondi ni d'écriture avec exposant).
Ma méthode peut sembler un peu brutale mais c'est la seule que j'ai trouvée, si quelqu'un voit comment faire sans stocker les puissances de 2 je suis preneur).
J'attends vos avis.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

draluorg
Messages postés
627
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
25 novembre 2010

re,

Erf, c'est encore pire que ce que j'avais pensé...
Mais j'ai plus ou moins trouvé

On prend mon petit projet (celui du zip plus haut)
on vire la declare et l'option du compilo, erreur crtMain machin

on active l'option, l'erreur crtmain est corrigee, mais on a l'erreur fltused

on fait un petit #pragma comment(lib, "ntdll.lib")
et hop plus d'erreur!!!
direction sortie asm... que voit on ?
EXTRN __fltused:DWORD

Voilà qui explique le mistére, tu peux toujours essayer sous vs2005 sait-on jamais...

++
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
8
Salut,
Je viens d'essayer avec VC2005 et ça ne marche pas. Après avoir declaré int _fltused; en global il me sort l'erreur:
error LNK2001: unresolved external symbol __ftol2
L'hypothèse de la nouveauté VC2008 se confirme donc. C'est une bonne nouvelle car cela nous éviterait d'utiliser de l'ASM pour utiliser les float sans CRT. Je vais donc bientôt passer à VC2008.
Vu le grand nombre d'options de compilation et d'édition des liens, on peut parfois se perdre et ne plus savoir ce qu'on fait. C'est ça la programmation avec ses joies et ses frustrations.
Merci encore.
draluorg
Messages postés
627
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
25 novembre 2010

re,

Pas de quoi, de mon coté je ne m'explique toujours pas pourquoi dans mon autre projet cette option suffit au compilateur.
Je viens encore de verifier, si je desactive cette fonction le projet ne compile plus!
Enfin comme on dit, la theorie c'est quand on connait tout mais que rien ne va, et la pratique c'est quand tout fonctionne et qu'on ne sait pas pourquoi...

++
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
8
Je n'ai pas pu résister j'ai vu le code. En effet, il n'y a aucune dépendance à la CRT. Le code ASM contient bien les instructions de traitement des floats. Il parait que c'est une nouveauté VC2008 car mon VC2005 n'arrive même pas à ouvrir le projet. Dommage. J'essaierai d'y voir plus clair plus tard.
Merci pour le partage.
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
8
Remarque: pour pouvoir virer totalement la CRT il faut travailler en C et non en C++.
Merci pour le code je vais le regarder demain.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.