cs_MrAzerty
Messages postés2Date d'inscriptionjeudi 26 janvier 2006StatutMembreDernière intervention16 juin 2006
-
16 juin 2006 à 10:29
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 2016
-
17 juin 2006 à 12:13
Mon problème est simple, je souhaie pouvoir convertir une chaine de caractères contenant un réel ("78.46", par exemple),
à la norme IEEE 754 (comme les float) , et cela sans utiliser de float, ni de "%f", ni rien qui touche de près ou de loin au type float.
La valeur devra donc ensuite être mémorisée sur 32bits, dans un unsigned long par exemple.
Merci par avance pour votre aide...
cs_MrAzerty
Messages postés2Date d'inscriptionjeudi 26 janvier 2006StatutMembreDernière intervention16 juin 2006 16 juin 2006 à 18:18
En fait mon code ne sera pas compilé pour un pc mais pour un calculateur 16 bits (sc12). Le types float est mal géré par ce dernier, je me suis rendu compte que de nombreux dépassements mémoires aparaissaient, dus à cette mauvaise gestion... En rendant une visite sur le site web du constructeur (et en cherchant quelques heures), je me suis aperçu qu'il existaient une solution, mais non apliquable au C++ pour des raisons trop longues à expliquer (pointeurs sur des fonctions C,etc).
Or, les données doivent impérativement être stockées au format IEEE 754, car le programme comunique en liaison série avec un esclave Modbus, utilisant cette norme.
Donc, je résume:
-Impossiblilité d'utiliser le type float, ni les "atof()" sous peine de dépassement mémoire et donc de plantage aléatoire
-Nécéssité de stocker quand même les données au format IEEE 754
J'ai éssayé de faire un algorithme à partir d'explications, comme celles-ci . Cela me parait extrêmement compliqué, dans mon cas...
J'ai tout de même réussi à compiler une version stable, utilisant les floats. Ce projet sera présenté à un jury dans le cadre de mon bts très prochainement, je pense que je vais m'en tenir à cette version.