我有一个Double值xx.yyy,如果值为负,我想转换为字符串“xxyyy”或“-xxyy”。
我怎么能这样做?
问候。
答案 0 :(得分:8)
double yourDouble = 61.9155;
String str = String.valueOf(yourDouble).replace(".", "");
说明:
String.valueOf()
:将您的double转换为String str.replace(s1, s2)
:返回一个新的字符串,等于str
,其中所有s1
都被s2
替换为<强>更新强>:
OP有一些额外的条件(但我不确切地知道一个):负数 - &gt;只有两位小数。
public static String doubleToSpecialString(double d)
{
if (d >= 0)
{
return String.valueOf(d).replace(".", "");
} else
{
return String.format("%.2f", d).replace(",", "");
}
}
负数 - &gt;少一个小数
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 :(得分:3)
此答案使用十进制格式化程序。它假定输入数字始终严格为( - )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;
}