2010-09-09 89 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