Pour moi, il semble normal d'être 1.234e + 05 en utilisant cette conversion, parce que quand nous l'inversons avec '"% f \ n", 1.235e + 05' nous obtenons 123500.000000 au lieu de souhaité "123400.000000".Pourquoi la notation scientifique pour "(double) 123456" avec "% .4g" conversion est "1.235e + 05" au lieu de 1.234e + 05
En fait, la question est: pourquoi le chiffre "4" est-il omis?!
L'exemple suivant va renforcer ce que je voulais dire:
#include <stdio.h>
int main(int argc, char **argv)
{
char x[100];
sprintf(x, "%.4g", (double)123456);
printf(">%s<\n", x);
printf("%f\n", 1.235e+05);
return 0;
}
Merci, Valentin
On dirait que c'est juste arrondi vers le haut pour moi, plutôt que de "sauter un chiffre". – JS1
Oui, il arrondit normalement car 123456 est plus proche de 123500 que de 123400. – jschultz410