在Java中的兩個字符串,我怎麼可以把兩個不同的字符串,返回兩個字符串的商作爲一個字符串?鴻溝的Java
下面是我想要實現的功能:
public static String divideTwoStrings(string1, string2){
//this function should convert both strings to doubles,
//and then return their quotient as a string
}
在Java中的兩個字符串,我怎麼可以把兩個不同的字符串,返回兩個字符串的商作爲一個字符串?鴻溝的Java
下面是我想要實現的功能:
public static String divideTwoStrings(string1, string2){
//this function should convert both strings to doubles,
//and then return their quotient as a string
}
要做到這一點,你需要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));
}
}
Double.valueOf不必要創建了一倍,如果你使用Double.parseDouble它返回一個'double'。 – 2013-05-12 20:42:18
@PeterLawrey這可不是* I *關心一般。我很樂意假定編譯器會爲我優化這個。即使沒有,我也很少寫代碼,這是瓶頸。 – 2013-05-12 20:43:42
我懷疑OP也是如此。我超低GC系統是創建對象的工作是不必要的,你優化掉的第一件事(和逃逸分析還是不夠聰明,尚) – 2013-05-12 20:51:51
public static String divideTwoStrings(String string1, String string2){
double d1 = Double.parseDouble(string1), d2 = Double.parseDouble(string2);
double division = d1/d2;
return division + "";
}
假設有一個很好的理由,而不是使用double
String
šš一個更好的選擇可能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
'Double.parseDouble(字符串)'可以解析,數學應該很容易了。 – 2013-05-12 20:30:20
Double.parseDouble(String)? – 2013-05-12 20:30:34
我不明白所有downvotes的原因。我知道這個問題不難回答,但是這是怎麼回事呢? – 2013-05-12 20:32:37