2010-09-29 5 views
2

J'ai un cas, tel que, si la valeur flottante est 74.126, elle est arrondie en 74.13 ie. en 2 décimales. Mais si la valeur est 74,125, il doit être arrondi en 74,12 ...Arrondi Java Problème

S'il vous plaît aidez-moi à réaliser ce type de méthode d'arrondi

Merci à l'avance.

+0

Il est mathématique standard pour arrondir quand X.5 et arrondir vers le bas lorsque halfdan

+0

double possible de [Comment arrondir un nombre à n décimales en Java ] (http://stackoverflow.com/questions/153724/how-to-round-a-number-to-n-decimal-places-in-java) –

Répondre

1

Vraisemblablement, vous arrondissez avec Math.round(float a)? Si c'est le cas, les javadocs expliquent à peu près comment arrondis fonctionne mieux que je peux ici.

Vous pouvez regarder la classe BigDecimal car elle fournit une méthode round(MathContext mc) qui vous permet de spécifier différents modes d'arrondi tels que HALF_DOWN.

Éditer: Si vous souhaitez simplement définir le nombre de décimales, vous pouvez le faire avec la méthode setScale.

float f = 74.125f; 
BigDecimal b = new BigDecimal(f).setScale(2, RoundingMode.HALF_DOWN); 
2

Je vous suggère d'utiliser BigDecimal au lieu de float, comme c'est une représentation plus naturelle où décimales chiffres ont un sens.

Cependant, je ne pense pas que vous voulez vraiment la méthode round, comme qui traite avec précision au lieu de échelle. Je pense que vous voulez setScale, comme l'a démontré ici:

import java.math.*; 
public class Test { 
    public static void main(String[] args) { 
    roundTo2DP("74.126"); 
    roundTo2DP("74.125"); 
    } 

    private static void roundTo2DP(String text) { 
    BigDecimal before = new BigDecimal(text); 
    BigDecimal after = before.setScale(2, RoundingMode.HALF_DOWN); 
    System.out.println(after); 
    } 
}