我有一个Double类型的数值xx.yyy,我想把它转换成字符串"xxyyy"或者如果这个数是负数,转换成"-xxyy"。
请问如何实现?
谢谢。
请问如何实现?
谢谢。
double yourDouble = 61.9155;
String str = String.valueOf(yourDouble).replace(".", "");
解释:
String.valueOf()
: 将你的双精度数转换为字符串str.replace(s1, s2)
: 返回一个新字符串,其中所有的 s1
都被替换为 s2
更新:
原帖增加了一些额外条件(但我不知道具体是哪些):
negative number -> only two decimals.
public static String doubleToSpecialString(double d)
{
if (d >= 0)
{
return String.valueOf(d).replace(".", "");
} else
{
return String.format("%.2f", d).replace(",", "");
}
}
negative number -> one decimal less
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(",", "");
}
}
这篇答案使用了十进制格式化程序。它假设输入的数字始终严格符合 (-)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;
}