Tout,
J'essaie de convertir le code Borland C ++ en C #.
Dans l'ancien code, je vois ce qui suit: p> regardant la documentation de Borland, je vois que ce tourne () accepte les paramètres positifs et négatifs pour la précision. Des moyens positifs rond à 10 ^ n, négatif - à 10 ^ -n. P> regarder la documentation C # de maths.Roundto () Je ne peux pas trouver une référence si elle acceptera des nombres négatifs pour la précision. Et tous les échantillons sont présentés avec les nombres positifs. P> Quelle est la bonne façon de convertir le code dans ce cas? Devrais-je juste oublier le signe et écrire: p> merci. P> p>
3 Réponses :
Math.Round pour les doubles en C # ne peut pas accepter les valeurs négatives pour chiffres em> (en fait, il est documenté dans cette page même de lancer une argumentOfrangeException si les chiffres sont inférieurs à 0 ou supérieur à 15) Le paramètre est dans le cas de Math.Round, demandant un certain nombre de chiffres fractionnaires, ce qui signifie que le signe du paramètre serait inversé, donc dans votre cas, oui, p> serait une traduction correcte du paramètre A -2. p> p>
En tant que note mineure, le Borland rond-rond de code> et le C #
rond code> Faites l'arrondissement du banker par défaut, alors rien à craindre à ce sujet.
Avez-vous essayé? J'ai fait une exception:
Je ne suis pas au courant d'une solution intégrée au type d'arrondi que vous cherchez à faire, mais cela ne signifie pas qu'il n'y en a pas quelque part. Une solution rapide serait de créer une méthode ou même une méthode d'extension pour faire ce que vous recherchez:
double DoubleRound(double value, int digits) { if (digits >= 0) { return Math.Round(value, digits); } else { digits = Math.Abs(digits); double temp = value / Math.Pow(10, digits); temp = Math.Round(temp, 0); return temp * Math.Pow(10, digits); } }