Câu trả lời:
Bạn có thể sử dụng Double.parseDouble()
để chuyển đổi String
thành a double
:
String text = "12.34"; // example String
double value = Double.parseDouble(text);
Đối với trường hợp của bạn, có vẻ như bạn muốn:
double total = Double.parseDouble(jlbTotal.getText());
double price = Double.parseDouble(jlbPrice.getText());
double total = Double.parseDouble(jlbTotal.getText());
double total = Double.parseDouble(jlbTotal.getText().replaceAll("[^0-9.]", ""));
- về cơ bản thay thế tất cả các ký tự không phải là số hoặc .
không có gì, chỉ để lại số và dấu thập phân được phân tích cú pháp.
Double
thay vì double
sử dụng kiểu nguyên thủy Double.valueOf(String)
.
Nếu bạn gặp vấn đề trong việc phân tích chuỗi thành giá trị thập phân, bạn cần thay thế "," trong số thành "."
String number = "123,321";
double value = Double.parseDouble( number.replace(",",".") );
Để chuyển đổi một chuỗi trở lại thành một đôi, hãy thử như sau
String s = "10.1";
Double d = Double.parseDouble(s);
Phương thức parseDouble sẽ đạt được hiệu quả mong muốn và phương thức Double.valueOf () cũng vậy.
double d = Double.parseDouble(aString);
Điều này sẽ chuyển đổi chuỗi aString thành double d.
Sử dụng new BigDecimal(string)
. Điều này sẽ đảm bảo tính toán thích hợp sau này.
Như một quy tắc tự nhiên - luôn luôn sử dụng BigDecimal
cho các tính toán nhạy cảm như tiền.
Thí dụ:
String doubleAsString = "23.23";
BigDecimal price = new BigDecimal(doubleAsString);
BigDecimal total = price.plus(anotherPrice);
Bạn chỉ cần phân tích các giá trị Chuỗi bằng Double
String someValue= "52.23";
Double doubleVal = Double.parseDouble(someValue);
System.out.println(doubleVal);
Trích dẫn trích dẫn từ Robertiano ở trên một lần nữa - bởi vì đây là phiên bản thích ứng linh hoạt và bản địa hóa nhất. Nó xứng đáng một bài viết đầy đủ!
Một lựa chọn khác:
DecimalFormat df = new DecimalFormat();
DecimalFormatSymbols sfs = new DecimalFormatSymbols();
sfs.setDecimalSeparator(',');
df.setDecimalFormatSymbols(sfs);
double d = df.parse(number).doubleValue();
String double_string = "100.215";
Double double = Double.parseDouble(double_string);
Có một cách khác nữa.
Double temp = Double.valueOf(str);
number = temp.doubleValue();
Double là một lớp và "temp" là một biến. "số" là số cuối cùng bạn đang tìm kiếm.
Đây là những gì tôi sẽ làm
public static double convertToDouble(String temp){
String a = temp;
//replace all commas if present with no comma
String s = a.replaceAll(",","").trim();
// if there are any empty spaces also take it out.
String f = s.replaceAll(" ", "");
//now convert the string to double
double result = Double.parseDouble(f);
return result; // return the result
}
Ví dụ: bạn nhập Chuỗi "4 55,63. 0", đầu ra sẽ là số kép 45563.0
Sử dụng Double.parseDouble()
mà không có try/catch
khối xung quanh có thể gây ra tiềm năngNumberFormatException
có chuỗi kép đầu vào không tuân theo định dạng hợp lệ.
Quả ổi cung cấp một phương thức tiện ích cho phương thức này trả về null
trong trường hợp Chuỗi của bạn không thể được phân tích cú pháp.
Double valueDouble = Doubles.tryParse(aPotentiallyCorruptedDoubleString);
Trong thời gian chạy, đầu vào Chuỗi không đúng định dạng null
được gán chovalueDouble
Đã sử dụng điều này để chuyển đổi bất kỳ số Chuỗi nào thành gấp đôi khi bạn cần int chỉ cần chuyển đổi kiểu dữ liệu từ num và num2 sang int; lấy tất cả các trường hợp cho bất kỳ chuỗi kép nào với Eng: "Bader Qandeel"
public static double str2doubel(String str) {
double num = 0;
double num2 = 0;
int idForDot = str.indexOf('.');
boolean isNeg = false;
String st;
int start = 0;
int end = str.length();
if (idForDot != -1) {
st = str.substring(0, idForDot);
for (int i = str.length() - 1; i >= idForDot + 1; i--) {
num2 = (num2 + str.charAt(i) - '0') / 10;
}
} else {
st = str;
}
if (st.charAt(0) == '-') {
isNeg = true;
start++;
} else if (st.charAt(0) == '+') {
start++;
}
for (int i = start; i < st.length(); i++) {
if (st.charAt(i) == ',') {
continue;
}
num *= 10;
num += st.charAt(i) - '0';
}
num = num + num2;
if (isNeg) {
num = -1 * num;
}
return num;
}
String s = "12.34";
double num = Double.valueOf(s);
Bạn có thể sử dụng double.parseDouble ();
String num = "10.1";
Double x = Double.parseDouble(num);