Est-il possible d'arrondir un double en utilisant simplement une instruction printf?
Évidemment, ce n'est qu'une partie du code.
printf("Please enter a positive number that has a fractional part with three or more decimal places\n");
scanf("%5.2d", &x);
printf("The number you have entered is %5.2d\n" ,x);
Serait-ce arrondir automatiquement le nombre de type I dans? Ou est-il une autre façon de le faire?
Edit:
printf("Please enter a positive number that has a fractional part with three or more decimal places\n");
scanf("%lf", &x);
x = x + 0.05;
printf( "The number you have entered is %5.2lf\n", x);
Iv fait cela, mais Im prenant en considération ce que quelqu'un avait dit à propos de printf juste "changer" la façon dont il lit. Donc, ce n'est évidemment pas de la bonne façon. Je devrais peut-être mettre en œuvre la fonction pow ()? Cela fonctionne avec ce en quelque sorte?
Edit2:
printf("Please enter a positive number that has a fractional part with three or more decimal places\n");
scanf("%lf", &x);
x = x + 0.05;
printf( "The number you have entered is %5.2lf\n", x);
Bon, iv arrivé au point où si je imput un nombre, il va s'arrondir à un nombre entier. 35.21 seront tour à 35, et 35.51 seront tour à 36 et. etc.
Comment aurais-je obtenir 35.2178 à tour de 35.22, et 35.2135 à tour de 35.21.
Comment aurais-je obtenir certains pouvoirs de la décimale à tour à la place du nombre entier?
- Est
x
un int ou un double? - Je l'ai essayé, et il ne fonctionne que de temps en temps. Est-il une autre façon d'aller à ce sujet? Je suis relativement nouveau à C.
- X est un double dans ce
- Ensuite, vous ne devriez pas avoir dit que c'était un nombre entier. Ou vouliez-vous dire "arrondir à un nombre entier"?
- Je ne comprends pas, où ai-je dis que c'est un entier? N' %d de ne pas travailler avec cela?
%d
est pour un entier. Où avez-vous appris qu'il était pour les doubles? Peut-être que vous devriez regarder dans une référence ou d'un livre.- Vous ne pouvez pas utiliser %.2f avec scanf.
- La chaîne de format de scanf() est différent de celui de printf(). L'un dans ton exemple est tout simplement faux. Pour lire un double à partir de stdin, utiliser scanf() avec "%lf" chaîne de format, puis arrondir le nombre de la manière que vous préférez.
- oui mais comment l'arrondi se produire? En utilisant %5.2 lf?
- je suis perplexe =x
Vous devez vous connecter pour publier un commentaire.
Vous avez vraiment, vraiment ne devrait pas stocker les "arrondis" les valeurs dans les variables à virgule flottante. Virgule flottante inexactitude va ruiner ce - votre 5.10 pourrait devenir 5.099999999941892 tout simplement parce que la mise en œuvre pourrait ne pas être en mesure de stocker 5.10 exactement.
Comme une alternative, lire le nombre, le multiplier avec 100 et le convertir en int (qui terminera vers zéro). Qui va garder vos calculs précis.
"
%.2f
" sera le tour d'une double à 2 chiffres. Un double n'est pas un entier, et%d
et%f
ne sont pas interchangeables.double
, vous devez utiliser "%f".Merci à tous ceux qui ont essayé de l'aider! J'ai finalement obtenu
printf
ne modifie pas la valeur du nombre, juste la façon dont il est affiché. Une alternative estCe n'est pas logique
Vous ne pouvez pas avoir un entier avec des chiffres après la decmal point. si x est un plat alors des choses étranges vont se produire. Si ses un entier pourquoi êtes-vous après 2 décimales dans le printf.
Exactement ce que vous essayez de faire?
Edit:
Je suis assez sûr printf seulement tronque. Ainsi, vous aurez besoin d'ajouter de 0,005 autour d'elle.