comment arrondir un nombre à virgule flottante à la prochaine valeur entière en Java? Supposer
2.1 -> 3
3.001 -> 4
4,5 -> 5
7,9 -> 8
Vous devriez regarder l'arrondi du plafond dans les packages mathématiques de Java: Math.ceil
EDIT: Ajout du javadoc pour Math.ceil. Cela vaut peut-être la peine de lire toute la méthode en mathématiques.
http://docs.Oracle.com/javase/7/docs/api/Java/lang/Math.html#ceil%28double%29
public static double ceil(double a)
Renvoie la plus petite valeur double (la plus proche de l'infini négatif) supérieure ou égale à l'argument et égale à un entier mathématique. Cas spéciaux:
- Si la valeur de l'argument est déjà égale à un entier mathématique, le résultat est le même que l'argument.
- Si l'argument est NaN ou un infini ou un zéro positif ou un zéro négatif, le résultat est le même que l'argument.
- Si la valeur de l'argument est inférieure à zéro mais supérieure à -1,0, le résultat est un zéro négatif.
Notez que la valeur de
Math.ceil(x)
est exactement la valeur de-Math.floor(-x)
.
essaye ça
float a = 4.5f;
int d = (int) Math.ceil(a);
System.out.println(d);
J'ai eu le même problème où j'obtenais toujours la plus petite valeur int. C'était la division, pas le Math.ceil. Vous devez ajouter un plâtre (flottant) aux entrées. Voici comment je l'ai corrigé:
int totalNumberOfCachedData = 201;
int DataCountMax = 200;
float ceil =(float) totalNumberOfCachedData / (float)DataCountMax;
int roundInt = (int) Math.ceil(ceil);
Cela me donnera 2 pour la valeur de roundInt.
Voir
float a=10.34f,b=45.678f;
System.out.println((int)Math.ceil(a));
System.out.println((int)Math.ceil(b));
Sortie
11
46
Si cela aide quelqu'un, voici comment je fais fonctionner cela:
int arraySize = 3;
int pageSize = 10;
int pagesQty = (int) Math.ceil(arraySize / (float) pageSize);
System.out.println(pagesQty);
//Displays 1
Le diviseur doit être un flotteur pour fonctionner correctement.
J'utilise ceci:
public static int roundDoubleToUpperInt(double d){
return (d%1==0.0f)?(int)d:(int)(d+1);
}