Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Comment arrondir un Float , 2 chiffres aprés la virgule ?
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#11 Message par Guest » dim. 13 déc. 2015 17:48

Jérémy a écrit :
Sorry je ne comprends pas !!!!


tout simplement de supprimer le #8 c'est vrai c'est très complique :lol:

tu vois merci a c'est parce que, tu voulez que je te dise 2 fois merci ;)

ITOA
??? kesako


Fait partie de la librairie stdlib.h et c'est une fonction de conversion Int TO Ascii mais qui ne fait pas partie du standard voir #10 et tu as en bien d'autres,sur le lien de clauduis http://www.cplusplus.com/reference/cstdlib/itoa/ tu n'as pas de moteur de recherche :mrgreen:

je viens de voir ton programmeen #10, et que tu n'utilises plus la fonction printf, c'est bien, j'aime bien.Cela ressemble a ma fonction c'est encore mieux

Comment arrondir un Float , 2 chiffres aprés la virgule ?
Claudius
Avatar de l’utilisateur
Passioné
Passioné
Messages : 260
Âge : 69
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#12 Message par Claudius » dim. 13 déc. 2015 19:18

Bonsoir,

Si le langage C est un langage informatique, c'est avant tout un écosystème qui présente plusieurs centaines de fonctions et ce, rien que dans la libc dont la liste exhaustive de ces fonctions est ici: libc - Function and Macro Index. cf. également Bibliothèque standard du C.

Par expérience, si d'aventure une idée vous passe par la tête pour réaliser une fonctionnalité, le 1er réflexe doit être: Je ne suis pas le premier à avoir ce besoin et donc cela doit bien exister dans cet écosystème qui, malgré le grand âge de celui-ci, s’enrichit tous les jours...

Maintenant, j'avoue qu'il n'y a pas de méthode miraculeuse pour trouver d'une part le nom de la fonction et d'autre part sa signature mais heureusement qu'il a maintenant des moteurs de recherches et ... des forum ;-). Ne pas hésiter également à lire les fichiers include *.h livrés avec le compilateur...

NB: itoa() n'est pas une fonction mais une macro qui est dépréciée depuis des lustres car très permissive et donc à ne pas utiliser si possible (celle-ci n'est d'ailleurs normalement plus implémentée dans les compilateurs ;-)). Préférer la fonction sprintf() ou une version allégée si pas besoin de toutes les conversions dans tous les sens...

Comment arrondir un Float , 2 chiffres aprés la virgule ?
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#13 Message par Guest » lun. 14 déc. 2015 08:18

Bonjour

Merci pour clauduis pour itoa
Classé comme fonction non standard dans ton lien c++ . ;) et on la trouve dans XC8
Quand aux fonctions sprintf, printf, un raccourci pour un ftoa (conversion flottant vers ascii) un peu allégé en #7 ou la réflexion sur le CAN toujours en #7 qui doivent gagner en rapidité et alléger le code mais comme dab un simple conseil

A+

Comment arrondir un Float , 2 chiffres aprés la virgule ?
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#14 Message par paulfjujo » lun. 14 déc. 2015 12:23

Pour éviter ce chiffre à virgule, il suffit de mettre Vref+ a 5.12V cela nous donne 0.005 plus facile a multiplier ou a diviser par des rotations.


ou une ref de 4,096V au cas ou l'alim 5V soit trop juste
1024 points de 4 mV

itoa ?


le pendant de itoa en mikroC est :
IntToStr(value,Txt) ; pour un entier 16 bit signé
ou WordToStr(value;txt); pour un entier non signé
Aide toi, le ciel ou FantasPic t'aidera

Comment arrondir un Float , 2 chiffres aprés la virgule ?
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#15 Message par Guest » lun. 14 déc. 2015 12:28

Oui paul
Bonjour
Du moment que nous sommes dans un multiple de 2, et pouvons utiliser les rotations c'est le principale .
Mettre un 7805, un LM 317 fait aussi bien l'affaire il est vrai au prix de 2 résistances :roll:

Pour les 5.12V si un alimentation n'arrive pas a compenser 0.12V. il y a sûrement un petit problème au niveau conception de l'alimentation

A+

Comment arrondir un Float , 2 chiffres aprés la virgule ?
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#16 Message par Guest » mar. 15 déc. 2015 09:15

bonjour

Pour les 5.12V si un alimentation n'arrive pas a compenser 0.12V. il y a sûrement un petit problème au niveau conception de l'alimentation.

j'aime bien le pas de quantification de 0.005, car avec lui et en utilisant un pont diviseur BIEN DÉFINI. Le CAN nous fourni une image instantané de l'entrée, adieu flottant reste plus quand faire une conversion hexa ->BCD .Très rapide lorsque on est un peu coincé par une base de temps pour un échantillonnage serrée et de plus est, plusieurs CAN a scruter.
on n'est pas encore la. dommage car le sujet est intéressant

A+

Comment arrondir un Float , 2 chiffres aprés la virgule ?
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#17 Message par Jérémy » mar. 15 déc. 2015 09:24

on n'est pas encore la. dommage car le sujet est intéressant


:D , pour moi c'est deux ou trois niveau au dessus encore exit .

Mais c'est vrai que c'est intéressant. Je ne sais pas ou je vais pouvoir mettre toutes vos astuces car mon cerveau est très limité en terme de mémoire dehors!!
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Comment arrondir un Float , 2 chiffres aprés la virgule ?
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#18 Message par Guest » mar. 15 déc. 2015 10:20

NON jeremy c'est tout simple

Application des ponts diviseurs et bon utilisation des possibilités du CAN

Regarde si VCC=5.12V et que VREF+=VCC et VREF-=VSS on a un Q de 0.005

Cote CAN pour une tension de VA de 5.12v en sortie CAN tu as 1023 1024 en comptant le 0
Pour une tension de 5V tu as en sortie CAN 1000 fait le calcul allez je le fais pour toi 5/0.005 on a bien 1000
Toujours pour une tension de 5v en entrée mais avec un pont diviseur de 1∕2 = 2.5V en sortie du CAN tu as 500 INTÉRESSANT

maintenant si tu as 2.5 en entré toujours avec la même configuration en sortie du CAN tu as 250 super pas de flottant

Bien sur la sortie du CAN est en HEXA il reste donc plus d'affaire la conversion hexa -> ascii et poser le point virgule.

si tu suis je continue ? pour des tensions supérieur a 5V

A+

Comment arrondir un Float , 2 chiffres aprés la virgule ?
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#19 Message par Jérémy » mar. 15 déc. 2015 10:31

Je comprends les calculs, mais pas l’intérêt en fait ? sauf de calculer plus vite, mais comme c'est le µC qui fait les calculs on s'en fou non ?

Par exemple quand tu écrit :
maintenant si tu as 2.5 en entré toujours avec la même configuration en sortie du CAN tu as 250 super pas de flottant

si en entrée j'ai 2.13 V , j'ai en sortie du CAN j'aurai 426 ce n'est pas un flottant non plus . C'est ici que je ne comprends pas. Le CAN ne sort pas de flottant c'est la conversion en volt qui fais un flottant. car le flottant arrive quand on souhaite une connaitre la tension au dixième de volt par exemple ( pour rejoindre mon tuto), car on le muttiplie pour le Q qui lui est flottant.

Je comprends vite mais faut m'expliquer longtemps ! :D

Le problème des flottants c'est qu'ils sont durs à afficher , mais pas a calculer si ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Comment arrondir un Float , 2 chiffres aprés la virgule ?
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#20 Message par Guest » mar. 15 déc. 2015 11:29

c'est drole, pas une critique , mais ton attitude "c'est le µC qui fait le boulot" au prix de combien de cycles machine quand dans un système ou tout compte c'est sur, regard le programme décompile avec les flottants pas piqués des vers et encore tu as la multiplication sur ton µC en 16F il n'y a rien et tu es étonné de voir ton afficheur fait des loupés,c'est pas toi qui parle d'optimisation de ton programme et la tu n'as d'un seul CAN a traiter seule solution diminuer le nombres acces au CAN

Imagine:
8 CAN a traiter(6mesures de I et 2 de U) avec un calcul de pourcentage et bien sur affichage de ces 9 données, avec une base de temps très réduite pour être le plus juste possible de la réalité car ses calculs se répercutent dans le temps notamment sur le %,dis moi comme on fait, NON pas en changeant de µC NI en touchant a la fréquence environnement clos, réduire au max la conso mise en veille écran quand non utilisé .Sinon de travailler sur le code.petite réalisation de 2004 contrôleur de batterie 2 pack de 300A et 500A

je n'ai pas dit, ce que tu as fait ,ce n'est pas bon, seulement se que je propose c'est de l'optimisation au prix il est vrai d'un peu de hard 2 resistances


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 48 invités