Toujours Ronde, d'un Double
Comment pourrais-je toujours arrondir un double
à un int
, et jamais une tour vers le bas.
Je sais de Math.round(double)
, mais je le veux pour toujours round up.
Donc, si c'était 3.2
, il devient arrondi à 4.
Math.ceil
- si vous avez un problème de ce genre dans le futur, vous pouvez lire l'généré JavaDoc de la bibliothèque en question. Dans ce cas, Mathématiques- Même si vous n'avez pas envie de RTFM,
Math.round(yourNum+0.5)
œuvres. - Pas tout à fait comme
0.0
sera arrondi à1
c'est le même que l'arrondi vers le bas et en ajoutant 1.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
Math.ceil()
méthode.Voir JavaDoc lien: https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#ceil(double)
De la documentation:
ceil
Retourne le plus petit (le plus proche à l'infini négatif) le double de la valeur qui est supérieure ou égale à l'argument et est égale à une mathématique entier. Cas particuliers:
Noter que la valeur de Mathématiques.ceil(x) est exactement la valeur de Math.étage(-x).
Paramètres:
Retourne:
Le plus petit (le plus proche à l'infini négatif) valeur à virgule flottante qui est supérieur ou égal à l'argument et est égale à une mathématique entier.
Dans des mots simples,
Math.ceil
toujours round UP ou comme dit ci-dessus, dans excès.Math.round
arrondir vers le haut ou vers le bas selon les décimales.Exemples de
Math.ceil
etMath.round
:Le code ci-Dessous serait de retour:
Coût, sans Ceil 2.2 et avec Ceil 3 (int), 3.0 (double). Si nous autour d'elle: 2
Si nous changeons la valeur de m2 par exemple 2499, le résultat serait:
Coût, sans Ceil 2.499 et avec Ceil 3 (int), 3.0 (double). Si nous autour d'elle: 2
Si nous changeons la valeur de m2 par exemple 2550, le résultat serait:
Coût, sans Plafond de 2,55 et avec Ceil 3 (int), 3.0 (double). Si nous autour d'elle: 3
Espère que cela aide. (Informations extraites à partir des réponses précédentes, je voulais juste le rendre plus clair).
Bon travail ! 😉
Ma méthode est relativement simple, espérons que cela fonctionne pour vous.
Dans mon cas, j'ai une ligne d'objets qui ne peuvent contenir que 3 articles et je dois ajuster le nombre de lignes que j'ai pour accueillir les éléments.
Alors j'ai quelques Doubles nombredelignes, je puis utiliser nombredelignes.intValue() pour obtenir une valeur int pour nombredelignes.
si la valeur int-je obtenir est de moins de nombredelignes, j'ajoute 1 à nombredelignes afin de l'arrondir, d'autre de la valeur que je reçois de nombredelignes.intValue() est la réponse que je veux.
J'ai écrit cette simple boucle for pour le tester:
Exemple court sans l'aide de Mathématiques.ceil().
Exaplanation:
Comparer opérande d'arrondi opérande à l'aide de transtypage, si grand retour arrondi argument + 1 (moyen tour) reste inchangé opérande.
Exemple en Pseudo-code
De toute façon, vous devez utiliser
Math.ceil()
. C'est uniquement destinée à être un exemple simple de la façon dont vous pourriez le faire par vous-même.tl;dr
BigDecimal
Si vous voulez la précision plutôt que la performance, éviter virgule flottante de la technologie. Que signifie éviter
float
,Float
,double
,Double
. Pour plus de précision, utilisezBigDecimal
classe.Sur un
BigDecimal
, définir l'échelle de l', le nombre de chiffres à droite de la virgule. Si vous ne voulez pas de fraction décimale, réglez l'échelle à zéro. Et de préciser un mode d'arrondi. Toujours autour d'une fraction vers le haut, utilisezRoundingMode.PLAFOND
documentée:Voir ce code à exécuter en direct à IdeOne.com.
Math.ceil()
vous donnera le plus proche de la valeur la plus basse si vous voulez qu'il soit arrondi au plus proche des valeurs que vous devriez utiliserMath.floor()