2010-09-09 9 views

Répondre

3

Cette réponse utilise une décimale Formatter. Il suppose que le nombre d'entrée est toujours strictement de la forme (-) xx.yyy.

/** 
* Converts a double of the form xx.yyy to xxyyy and -xx.yyy to -xxyy. 
* No rounding is performed. 
* 
* @param number The double to format 
* @return The formatted number string 
*/ 
public static String format(double number){ 
    DecimalFormat formatter = new DecimalFormat("#"); 
    formatter.setRoundingMode(RoundingMode.DOWN); 
    number *= number < 0.0 ? 100 : 1000; 
    String result = formatter.format(number); 
    return result; 
} 
+0

+1 pour utiliser DecimalFormat au lieu de toString –

+0

C'est vrai !!! Ça marche... – mtz

8
double yourDouble = 61.9155; 
String str = String.valueOf(yourDouble).replace(".", ""); 

Explication:

Mise à jour:

L'OP avait des conditions supplémentaires (mais je ne sais pas exactement un):

  • nombre négatif -> seulement deux décimales.

    public static String doubleToSpecialString(double d) 
    { 
        if (d >= 0) 
        { 
         return String.valueOf(d).replace(".", ""); 
        } else 
        { 
         return String.format("%.2f", d).replace(",", ""); 
        } 
    } 
    
  • nombre négatif -> une décimale moins

    public static String doubleToSpecialString(double d) 
    { 
        if (d >= 0) 
        { 
         return String.valueOf(d).replace(".", ""); 
        } else 
        { 
         String str = String.valueOf(d); 
         int dotIndex = str.indexOf("."); 
         int decimals = str.length() - dotIndex - 1; 
         return String.format("%." + (decimals - 1) + "f", d).replace(",", ""); 
        } 
    } 
    
+1

ne fonctionne pas pour les nombres négatifs. xx.yyy doit devenir -xxyy, selon la question. – dogbane

+0

mais que se passe-t-il si la valeur est négative (-26.301), j'obtiendrai une longueur de 5 caractères plus le signe ("-26301"), et je n'ai besoin que de 4 plus le signe ("-2630"). – mtz

+0

@mtz: Donc, si c'est un négatif, vous voulez seulement deux décimales ou seulement 4 chiffres? –