2013-05-12 93 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