Virgule flottante hexadécimale, arrondie

J’essaie l’exemple suivant:

printf("%9.1a",4488.09); //Only one digits has to be printed after digital point 

La représentation binary de 4488.09 == 1 0001 1000 1000.000101011100001010001111010111000010100011110101 devrait devenir 0x1.1p + 12 ou 0x1.2p + 12?

Je ne peux pas comprendre si l’opération round (en cours d’impression) doit être effectuée pour la représentation binary ou pour la représentation 1.18 + 13? Et si elle doit exécuter ceil() – le 8 se situe exactement au milieu de la plage hexadécimale …

    Le binary peut toujours être converti en décimal sans perte, sauf si vous limitez le nombre de chiffres décimaux à un nombre trop petit. Si la valeur de la mantisse est quelque chose comme 1.188170A3D70A4 et que vous limitez printf () à un seul chiffre fractionnaire, vous devez obtenir 1.2 pour la mantisse. Si vous le limitez à 2 chiffres fractionnaires, vous devriez obtenir 1.19. Si 3, alors 1,188. Si 4, alors 1.1881. Etc.

    Oui, lorsque vous imprimez un nombre de 9,1, vous obtenez l’arrondi.

    si vous ne voulez pas arrondir, vous pouvez mettre à zéro les bits inférieurs.

    votre erreur semble penser que les chiffres seront arrondis pour une partie du nombre, mais pas pour le nombre entier.

    également ici à tennessee, nous n’utilisons pas le mot mantisse. Mais nous utilisons la “partie fractionnaire”