Comment fonctionne réellement (floor) en C? Selon techonthenet. com,Comment fonctionne (sol) en C? Étrange résultat avec var = 4.2 lors de la multiplication de 100 et de l'appel (floor)
Dans la langue de programmation C, la fonction retourne étage le plus grand entier qui est inférieur ou égal à x (ex: bas arrondit le entier le plus proche).
Après avoir entré la valeur 4.2 dans get_float(), j'utilise étage (4,2 * 100), pour les transformer en cents et enlever décimales et d'en faire un entier.
Cependant, je suis perplexe pourquoi entrer la valeur spécifiquement 4.2 retournera une valeur différente pour l'étage (4.2 * 100) et le plancher (4.2 * 1000/10)? Cela a-t-il quelque chose à voir avec l'imprécision?
Voir l'image: When variable entered as 4.2, floor produces different values
BTW, je suis tout à fait nouveau à ce juste commencé CS50 sur EDX, et essayer le dernier exercice de la leçon de la semaine 1 .. aimerait également des commentaires sur d'autres parties du code . Plus d'informations sur le problème ici: http://docs.cs50.net/problems/greedy/greedy.html
* Cela a-t-il quelque chose à voir avec l'imprécision * - oui. –
Les questions demandant l'aide au débogage ("pourquoi ce code ne fonctionne-t-il pas?") Doivent inclure le comportement souhaité, un problème ou une erreur spécifique et le code le plus court nécessaire pour le reproduire dans la question elle-même. Les questions sans énoncé de problème clair ne sont pas utiles aux autres lecteurs. Voir: Comment créer un exemple minimal, complet et vérifiable. – Olaf
Exercice auxiliaire: écrivez «1/3» comme un nombre décimal puis multipliez le nombre décimal avec «3». Avez-vous eu exactement '1'? Ne triche pas! Déterminez combien est floor (3 * 1/3) 'en utilisant les valeurs que vous venez de calculer. Une chose semblable se produit dans les ordinateurs pour tous les nombres qui ne peuvent pas être écrits comme 'm/n' avec' n' étant une puissance intégrale positive de '2'. – axiac