Par exemple, j'ai la variable 3.545555555, que je voudrais tronquer à seulement 3,54.
java
double
truncate
decimalformat
Johnny
la source
la source
Réponses:
Si vous le souhaitez à des fins d'affichage, utilisez
java.text.DecimalFormat
:Si vous en avez besoin pour les calculs, utilisez
java.lang.Math
:la source
floor
pour tronquer ne fonctionne que pour les valeurs positives.RoundingMode.DOWN
commeRoudingMode.FLOOR
toujours, des arrondis vers l'infini négatif.Vérifiez disponible
RoundingMode
etDecimalFormat
.la source
DOWN
cela a effectivement l'effet de troncature pour les nombres positifs et négatifs. Comme vu dans le tableau des exemples dans le doc .Bit Old Forum, Aucune des réponses ci-dessus n'a fonctionné pour les valeurs positives et négatives (je veux dire pour le calcul et simplement pour tronquer sans arrondir). À partir du lien Comment arrondir un nombre à n décimales dans Java
Cette méthode a bien fonctionné pour moi.
Résultats :
la source
Notons d' abord que
double
est une fraction binaire et ne pas vraiment avoir décimales.Si vous avez besoin de décimales, utilisez a
BigDecimal
, qui a unesetScale()
méthode de troncature, ou utilisezDecimalFormat
pour obtenir unString
.la source
Si, pour une raison quelconque, vous ne souhaitez pas utiliser a,
BigDecimal
vous pouvez convertir votredouble
en unint
pour le tronquer.Si vous souhaitez tronquer à l' emplacement des Unes :
int
Vers la dixième place:
int
double
Hundreths place
Exemple:
Dans cet exemple,
decimalPlaces
serait le nombre de places PASSÉ les endroit où vous voulez aller, donc 1 arrondissent à la dixième place, 2 aux centièmes , et ainsi de suite (0 tours au ceux lieu, et un négatif aux dizaines , etc.)la source
unroundedNumber
c'est assez gros. Cela peut fonctionner pour l'exemple de la question, mais une solution générale devrait fonctionner pour toutdouble
.Le formatage sous forme de chaîne et la conversion en double, je pense, vous donneront le résultat souhaité.
La valeur double ne sera pas round (), floor () ou ceil ().
Une solution rapide pour cela pourrait être:
Vous pouvez utiliser sValue à des fins d'affichage ou newValue pour le calcul.
la source
Peut
Math.floor(value * 100) / 100
- être ? Attention, les valeurs comme3.54
peuvent ne pas être exactement représentées par undouble
.la source
Vous pouvez utiliser l'objet de classe NumberFormat pour accomplir la tâche.
la source
3,545555555 pour obtenir 3,54. Essayez de suivre pour cela:
Cela donnera = 3,54!
la source
Voici la méthode que j'utilise:
Cela peut également être fait:
la source
Peut-être suivant:
la source
Une vérification rapide consiste à utiliser la méthode Math.floor. J'ai créé une méthode pour vérifier un double pour deux décimales ou moins ci-dessous:
la source
J'ai une version légèrement modifiée de Mani .
Production:
la source
Cela a fonctionné pour moi:
J'aime personnellement cette version car elle effectue en fait l'arrondi numériquement, plutôt qu'en la convertissant en chaîne (ou similaire), puis en la formatant.
la source
Eh bien, cela peut être un peu gênant, mais je pense que cela peut résoudre votre problème :)
la source