J'ai une double valeur xx.yyy et je veux convertir en chaîne "xxyyy" ou "-xxyy", si la valeur est négative.double à la mise en forme de chaîne
Comment pourrais-je le faire?
Cordialement.
J'ai une double valeur xx.yyy et je veux convertir en chaîne "xxyyy" ou "-xxyy", si la valeur est négative.double à la mise en forme de chaîne
Comment pourrais-je le faire?
Cordialement.
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;
}
double yourDouble = 61.9155;
String str = String.valueOf(yourDouble).replace(".", "");
Explication:
String.valueOf()
: convertit votre double pour une chaînestr.replace(s1, s2)
: renvoie une nouvelle chaîne est égale à str
où tous les ss1
's sont remplacés par
s2
'
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(",", "");
}
}
ne fonctionne pas pour les nombres négatifs. xx.yyy doit devenir -xxyy, selon la question. – dogbane
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
@mtz: Donc, si c'est un négatif, vous voulez seulement deux décimales ou seulement 4 chiffres? –
+1 pour utiliser DecimalFormat au lieu de toString –
C'est vrai !!! Ça marche... – mtz