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);
}
}