2013-05-12 92 views
-5

在Java中的兩個字符串,我怎麼可以把兩個不同的字符串,返回兩個字符串的商作爲一個字符串?鴻溝的Java

下面是我想要實現的功能:

public static String divideTwoStrings(string1, string2){ 
    //this function should convert both strings to doubles, 
    //and then return their quotient as a string 
} 
+1

'Double.parseDouble(字符串)'可以解析,數學應該很容易了。 – 2013-05-12 20:30:20

+0

Double.parseDouble(String)? – 2013-05-12 20:30:34

+0

我不明白所有downvotes的原因。我知道這個問題不難回答,但是這是怎麼回事呢? – 2013-05-12 20:32:37

回答

5

要做到這一點,你需要Double.valueOf。這會將兩個字符串變成一個Double。然後你可以像平常一樣分開它們。利用這一結果,並呼籲該String.valueOf把它放回一個字符串。

這將返回「0.7857142857142857」

public class Sandbox { 

    public static void main(String[] args) { 
     System.out.println(divideTwoStrings("5.5", "7")); 
    } 

    public static String divideTwoStrings(String string1, String string2) { 
     return String.valueOf(Double.valueOf(string1)/Double.valueOf(string2)); 
    } 
} 
+0

Double.valueOf不必要創建了一倍,如果你使用Double.parseDouble它返回一個'double'。 – 2013-05-12 20:42:18

+0

@PeterLawrey這可不是* I *關心一般。我很樂意假定編譯器會爲我優化這個。即使沒有,我也很少寫代碼,這是瓶頸。 – 2013-05-12 20:43:42

+0

我懷疑OP也是如此。我超低GC系統是創建對象的工作是不必要的,你優化掉的第一件事(和逃逸分析還是不夠聰明,尚) – 2013-05-12 20:51:51

0
public static String divideTwoStrings(String string1, String string2){ 
    double d1 = Double.parseDouble(string1), d2 = Double.parseDouble(string2); 
    double division = d1/d2; 
    return division + ""; 
} 
1

假設有一個很好的理由,而不是使用doubleStringšš一個更好的選擇可能EB使用的BigDecimal做計算。例如

public static void main(String... ignore) { 
    System.out.println(divideTwoStrings("123456789.", "11223344.5566778899")); 
} 

public static String divideTwoStrings(String string1, String string2) { 
    BigDecimal a = new BigDecimal(string1); 
    BigDecimal b = new BigDecimal(string2); 
    return a.divide(b, a.scale(), RoundingMode.HALF_UP).toString(); 
} 

打印

10.9999999010 
+0

+1使用'BigDecimal'。 – Maroun 2013-05-12 20:39:47

+0

@MarounMaroun我通常喜歡使用雙比BigDecimal的,但在這種情況下,我相信這是最明智的選擇。 – 2013-05-12 20:41:38

+0

確實。這裏更適合。 – Maroun 2013-05-12 20:42:47