web-dev-qa-db-fra.com

Arrondir un double à un entier

J'ai un numéro ("double") de int/int (comme 10/3).

Quel est le meilleur moyen d'approximation par excès et de le convertir en int sur C #?

21
markzzz

Vous demandez System.Math.Ceiling ?

Math.Ceiling(0.2) == 1
Math.Ceiling(0.8) == 1
Math.Ceiling(2.6) == 3
Math.Ceiling(-1.4) == -1
66
Doug McClean
int scaled = (int)Math.Ceiling( (double) 10 / 3 ) ;
9
EursPravus

Par "approximation par excès", je suppose que vous essayez "d'arrondir" le nombre de type double. Ainsi, la méthode "plafond" de @Doug McClean fonctionne très bien.

Voici une note: si vous commencez par double x = 0.8; et vous effectuez la conversion de type par (int)x; vous obtenez 0. Ou, si vous le faites (int)Math.Round(x); vous obtenez 1. Si vous commencez par double y = 0.4; et vous effectuez la conversion de type par (int)y; vous obtenez 0. Ou, si vous le faites (int)Math.Round(y); vous obtenez 0.

1
Ren Wang

Considérez 2,42, vous pouvez dire que c'est 242/100 btw, vous pouvez le simplifier à 121/50.

0
mrbm