2010-09-09 69 views
3

我有一个double值xx.yyy,如果值为负值,我想将其转换为字符串“xxyyy”或“-xxyy”。double to string formatting

我该怎么办?

问候。

回答

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

使用DecimalFormat而不是toString的+1使用 – 2010-09-09 17:47:23

+0

没错!有用... – mtz 2010-09-10 07:35:38

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

说明:

的被 s2取代'

更新

的OP有一些额外的条件(但我不正好与一个知道):

  • 负数 - >只有两位小数。

    public static String doubleToSpecialString(double d) 
    { 
        if (d >= 0) 
        { 
         return String.valueOf(d).replace(".", ""); 
        } else 
        { 
         return String.format("%.2f", d).replace(",", ""); 
        } 
    } 
    
  • 负数 - >一个小数较少

    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

不适用于负数。根据问题,xx.yyy需要变成-xxyy。 – dogbane 2010-09-09 15:41:58

+0

但如果值为负值(-26.301)会发生什么,我会得到一个5个字符长度加上符号(“-26301”),我只需要4加上符号(“-2630”)。 – mtz 2010-09-09 15:42:54

+0

@mtz:那么,如果它是负数,你只需要两位小数或只有4个数字? – 2010-09-09 15:45:39