-1
votes

Arrondir à 4 décimales en C #

J'ai la valeur

8443.64625

et voulez-vous arrondir à 4 décimales. Quand j'utilise décimal.round (8443.64625, 4, MidspointRounding.awayfrafromzero) Il donne la valeur

8443.6463

. Donc, il semble être arrondi à cause de la 5. Que puis-je faire pour que cela puisse renvoyer la valeur

8443.6462

. Je pourrais le convertir en chaîne puis tronquer après 4 dp mais je pense qu'il doit y avoir une manière plus efficace?


2 commentaires

Peut-être Stackoverflow.com/Questtions/12680121/...


Que voudriez-vous 8443.64629 être arrondi?


4 Réponses :


0
votes

Vous pouvez utiliser cela cela fonctionnera bien juste l'essayer une fois. Cela vous donnera le résultat que vous voulez. c'est 8443.6462.

    Math.Round(8443.64625, 4)


3 commentaires

Qui ronde en réalité au nombre même le plus proche - essayez math.round (8445.64635, 4) - il retournera 8445.6464 (ce qui ne veut pas que l'OP veut, ils veulent que Pour retourner 8445.6463 ).


@Matthewwatson Je veux retourner 8443.6462 que cela semble faire


@Baddub mais que voulez-vous 8445.64635 pour revenir? (Ce n'est pas le même numéro que 8445.64625 - regardez-le soigneusement! On se termine par 35 et l'autre avec 25 .)



0
votes

Il a été suggéré d'utiliser décimal.Round (8443.64625, 4, MidShyRounding.toeven) Code> Par quelqu'un, mais ce commentaire semble avoir été supprimé.

MidspointRounding.Toeven code > Travaux pour le scénario J'ai posté Oui, mais si la valeur était 8443.64629, elle produirait 8443.6463. J'en ai besoin pour tronquer sans arrondi. P>

Je suis tombé sur cette réponse qui semble tronquer après 4DP sans arrondir. P>

public static decimal TruncateValue(this decimal num, int significantDigits)
{
    decimal y = (decimal)Math.Pow(10, significantDigits);
    return Math.Truncate(num * y) / y;
}


0 commentaires

0
votes

Ceci fonctionne

var num = 8443.64625;

var roundedNum = Math.Round(num, 4, MidpointRounding.ToEven);


1 commentaires

Cela fonctionne pour le scénario que j'ai posté oui, mais si la valeur était 8443.64629, elle produirait 8443.6463. J'en ai besoin pour tronquer sans arrondir.



0
votes

Je ne sais pas si cela a été répondu pour le moment, mais vous pouvez utiliser tronquer .

Ce n'est pas "arrondi" en soi, mais vous obtiendrez le résultat que tu veux que tu veux. < / p>

IE: xxx

retourne xxx


0 commentaires