双到字符串格式

时间:2010-09-09 15:24:13

标签: java string formatting numbers string-formatting

我有一个Double值xx.yyy,如果值为负,我想转换为字符串“xxyyy”或“-xxyy”。

我怎么能这样做?

问候。

2 个答案:

答案 0 :(得分:8)

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

说明:

<强>更新

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;
}