|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Étudiant Inscription : janvier 2012 Messages : 160 ![]() |
Bonjour,
je voudrais extraire la partie décimale d'un float et la rendre entiere . Exemple: si j'ai 4.2 donc j'aurais la partie entiere est 4 et la partie décimale est 2 et je voudrais que mon programme retourne 4 et 20 (20= 2*10) or mon code me retourne 19 au lieu de 20 , une aide? Code :
|
||
|
|
00
|
|
|
#2 |
|
Invité régulier
![]() Étudiant Inscription : janvier 2013 Messages : 19 ![]() |
Peut-être qu'en utilisant le modulo.... :/
|
|
|
00
|
|
|
#3 | ||
|
Membre éclairé
![]() ![]() Julien SanchezÉtudiant Inscription : décembre 2012 Messages : 50 ![]() |
Bonjour,
En stockant la partie décimale dans un float, qu'est-ce que cela affiche ? Par exemple : Code C :
__________________
Un logiciel est libre si vous avez le droit d'étudier son code source, de le modifier et de le redistribuer. GNU/Linux est un logiciel libre, alors que Windows et Mac OS ne le sont pas. (aide) |
||
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Étudiant Inscription : janvier 2013 Messages : 19 ![]() |
j'avoue que je ne sais pas trop comment marche ce Getfloat()
|
|
|
00
|
|
|
#5 |
![]() ![]() Patrick GonordEnseignant Chercheur Inscription : juin 2005 Messages : 5 434 ![]() |
4.2 n'est pas représentable exactement dans un flottant. Probablement, la valeur exacte codée à la place de 4.2 est 4.1999999....
__________________
Publication : Concepts en C Mon avatar : Glenn Gould -------------------------------------------------------------------------- Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
|
|
|
20
|
|
|
#6 |
|
Membre du Club
![]() Étudiant Inscription : janvier 2012 Messages : 160 ![]() |
|
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Étudiant Inscription : janvier 2012 Messages : 160 ![]() |
|
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Étudiant Inscription : janvier 2013 Messages : 19 ![]() |
ah d'accord ^^ Aurais-tu plus de précision dessus ?
En tout cas, c'est bizarre, quand je prends ton code, il me fait plein d'erreurs ^^" notamment sur le while ^^ Pourquoi fait-tu (n<0) en tant que condition? |
|
|
00
|
|
|
#9 |
![]() ![]() Patrick GonordEnseignant Chercheur Inscription : juin 2005 Messages : 5 434 ![]() |
Tu ne peux pas : comment savoir si tu as voulu mettre dans ce float 4.2 ou vraiment 4.199999... ?
Ou alors ce que tu veux faire est un arrondi au plus proche à la nième décimale, mais ce n'est pas dans ta présentation de la question.
__________________
Publication : Concepts en C Mon avatar : Glenn Gould -------------------------------------------------------------------------- Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
|
|
|
10
|
|
|
#10 |
|
Membre du Club
![]() Étudiant Inscription : janvier 2012 Messages : 160 ![]() |
|
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Étudiant Inscription : janvier 2012 Messages : 160 ![]() |
j'ai saisi 4.2 si c'est ce que tu veux dire
|
|
|
00
|
|
|
#12 |
|
Membre éclairé
![]() ![]() Julien SanchezÉtudiant Inscription : décembre 2012 Messages : 50 ![]() |
Si l'utilisateur saisit la valeur 4.385, qu'est-ce que le programme est censé afficher ?
__________________
Un logiciel est libre si vous avez le droit d'étudier son code source, de le modifier et de le redistribuer. GNU/Linux est un logiciel libre, alors que Windows et Mac OS ne le sont pas. (aide) |
|
|
00
|
|
|
#13 |
|
Membre du Club
![]() Étudiant Inscription : janvier 2012 Messages : 160 ![]() |
|
|
|
00
|
|
|
#14 | ||
|
Membre éclairé
![]() ![]() Julien SanchezÉtudiant Inscription : décembre 2012 Messages : 50 ![]() |
Donc on part du principe que l'utilisateur saisit un nombre décimal avec au plus deux chiffres après la virgule.
Dans ce cas, il faut isoler la partie décimale dans une variable de type float, la multiplier par 100, puis arrondir cette valeur à l'entier le plus proche. Pour cela, nous avons besoin d'écrire une fonction qui prend en argument un nombre décimal, et qui renvoie l'entier le plus proche : Code C :
__________________
Un logiciel est libre si vous avez le droit d'étudier son code source, de le modifier et de le redistribuer. GNU/Linux est un logiciel libre, alors que Windows et Mac OS ne le sont pas. (aide) |
||
|
|
00
|
|
|
#15 | ||
|
Invité régulier
![]() Étudiant Inscription : janvier 2013 Messages : 19 ![]() |
Re!
Alors, voilà peut-être quelquechose qui pourra t'aider (même si ce code ne fait qu'afficher 0.0000 en ce qui concerne après la virgule...) ![]() Code :
|
||
|
|
00
|
|
|
#16 |
|
Expert Confirmé Sénior
![]() ![]() Ingénieur systèmes embarqués Inscription : juin 2009 Messages : 1 704 ![]() |
Utiliser fgets() et non scanf() pour récupérer le nombre ? Ainsi, on aura la valeur exacte de la partie entière, on la convertit et on la met dans un int ?
__________________
Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^ Pour vos problèmes d'embarqué, utilisez le forum dédié ! |
|
10
|
Copyright © 2000-2013 - www.developpez.com