2 votes

Printf en modifiant la valeur tout en utilisant %.22f

J'ai un problème avec la conversion de types basiques.

#inclure

int main()
{
     printf("%.22f",0.30);
     return 1;
}

La sortie que j'obtiens est 0.2999999999999999888978

Pourquoi 0.3 est-il converti en une valeur inférieure

Toute aide serait grandement appréciée

Nandish

9voto

Mysticial Points 180300

C'est parce que 0.30 ne peut pas être exactement représenté en virgule flottante binaire. En interne, seule une approximation de 0.30 peut être stockée. Par conséquent, lorsque vous l'imprimez, vous obtiendrez un numéro légèrement différent.

http://en.wikipedia.org/wiki/Floating_point

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X