J'essaie d'imprimer le numéro Quand j'utilise p> it sortie Est-ce que quelqu'un sait comment puis-je corriger cela? p> p> 684.545007 code> avec une précision de 2 points dans le sens où le numéro est tronqué (non arrondi) em> après 684.54 code >. 684.55 code>, mais ce que je voudrais obtenir est 684.54 code >. P>
3 Réponses :
Ce que vous cherchez est troncature em>. Cela devrait fonctionner (au moins pour des chiffres qui ne sont pas terriblement volumineux): la conversion en entiers tronque la partie fractionnée. P> in c ++ 11 ou C99 , vous pouvez utiliser la fonction dédiée Trunc code> à cet effet (de L'en-tête std::trunc(100 * var) / 100 // no need for casts
Si vous avez une bibliothèque standard C99, vous pouvez utiliser trunc () code>, qui fonctionnera pour une gamme de numéros beaucoup plus grande.
@CAF: Merci, j'ai ajouté ça. Je me demande si quelqu'un suggère Lrint () code> pour la première solution.
printf("%.2f\n", var - 0.005);
Étant donné que .005 n'est pas représentable exactement, cela est tenu de produire le problème incorrect pour quelques valeurs.
Voici mon approche. Il semble moche mais travaille dans la plupart des cas par ex. Var peut être plus grand puis int, peut être zéro ou bizarre '-0'. Il ne gère pas les infinités et les nans cependant.
double var = 684.545007; // or whatever
double var_trunc = var>=0. ? floor(var*100.)/100. : ceil(var*100.)/100.;
printf ("%g\n", var_trunc);
Si vous attendiez
684.54 code>, vous vous attendiez, vous vous attendiez au mauvais résultat. C'est si simple.Parce que je ne veux pas d'une valeur arrondie. Ce code fait partie d'une solution de code de juge en ligne de programmation.
Encore une fois: l'arrondi ne fonctionne pas comme si vous le souhaitez apparemment. Sélectionnez ISN 't cassé .
@Jackmaney, bien sûr non, le nombre est 684.545 et non 684.555. La sortie devrait être .54 pas 0,55
Il semble que vous ayez une mauvaise image de ce que signifie "précision".
Une autre façon de la mettre: ni 684.54 ni 684.55 est exactement égale à 684.545007, mais 684.55 est plus proche de celle-ci, c'est ce que vous obtenez.