Java에서 문자열을 두 배로 변환


답변:


471

Double.parseDouble()a String를 a 로 변환하는 데 사용할 수 있습니다 double.

String text = "12.34"; // example String
double value = Double.parseDouble(text);

귀하의 경우에는 원하는 것처럼 보입니다.

double total = Double.parseDouble(jlbTotal.getText());
double price = Double.parseDouble(jlbPrice.getText());

내 코딩은 double total = Double.parseDouble (string);이어야합니다.?
TinyBelly

4
@TinyBelly : 네, 당신이 원하는 것 같습니다 :double total = Double.parseDouble(jlbTotal.getText());
WhiteFang34

1
@TinyBelly : 문자열에서 구문 분석하려는 이중 텍스트를 추출해야합니다. : 나는 모든 것을 작동 보장 할 수 있지만 여기에서, 당신은 당신의 사건을 위해 그것을 할 수있는 하나 개의 방법 double total = Double.parseDouble(jlbTotal.getText().replaceAll("[^0-9.]", ""));이 기본적으로 숫자 나 아닌 모든 문자를 대체합니다 - .단지 수와 소수점 구문 분석 할 떠나, 아무것도에 있습니다.
WhiteFang34

4
가격 계산에 이중을 사용하는 것은 권장되지 않습니다.
Bozho

2
Double원시적 유형 대신 클래스의 결과를 검색하는 동안 여기에 유혹 된 사람들을 double위해 Double.valueOf(String).
Pshemo

48

문자열을 10 진수 값으로 구문 분석하는 데 문제가있는 경우 숫자에서 ","를 "."로 바꿔야합니다.


String number = "123,321";
double value = Double.parseDouble( number.replace(",",".") );

2
다른 옵션 : DecimalFormat df = new DecimalFormat (); DecimalFormatSymbols sfs = 새로운 DecimalFormatSymbols (); sfs.setDecimalSeparator ( ','); df.setDecimalFormatSymbols (sfs); df.parse (숫자);
Robertiano

37

문자열을 다시 이중으로 변환하려면 다음을 시도하십시오

String s = "10.1";
Double d = Double.parseDouble(s);

parseDouble 메소드는 원하는 효과를 얻을 수 있으며 Double.valueOf () 메소드도 마찬가지입니다.


2
아니요. String.valueOf (something)은 무언가의 문자열 표현을 반환합니다. 어떤 것이 내장 유형이거나 Object이고 null 인 경우 someObject.toString ()과 같습니다. String에서 Double을 얻으려면 다른 답변에서와 같이 다른 방법으로 라운드를 수행해야합니다 (Double.valueOf (someString)은 Double을 반환하고 Double.parseDouble (someString)은 double을 반환).
Johann Petrak


30

사용하십시오 new BigDecimal(string). 이것은 나중에 적절한 계산을 보장합니다.

일반적으로 BigDecimal돈과 같은 민감한 계산에는 항상 사용하십시오 .

예:

String doubleAsString = "23.23";
BigDecimal price = new BigDecimal(doubleAsString);
BigDecimal total = price.plus(anotherPrice);

20

Double을 사용하여 문자열 값구문 분석 하면됩니다.

String someValue= "52.23";
Double doubleVal = Double.parseDouble(someValue);
System.out.println(doubleVal);

14

Robertiano의 인용문을 다시 인용하십시오. 전체 게시물이 필요합니다!

다른 옵션 :

DecimalFormat df = new DecimalFormat(); 
DecimalFormatSymbols sfs = new DecimalFormatSymbols();
sfs.setDecimalSeparator(','); 
df.setDecimalFormatSymbols(sfs);
double d = df.parse(number).doubleValue();



3

이것이 내가 할 것입니다

    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
}

예를 들어, 문자열 "4 55,63. 0"을 입력하면 두 배의 숫자 45563.0이 출력됩니다.


2

Double.parseDouble()주변 try/catch블록 없이 사용 하면 전위가 발생할 수 있습니다NumberFormatException 하면 입력 이중 문자열이 올바른 형식을 따르지 않을 .

Guava는 nullString을 파싱 할 수없는 경우 를 반환하는 유틸리티 메소드를 제공합니다 .

https://google.github.io/guava/releases/19.0/api/docs/com/google/common/primitives/Doubles.html#tryParse(java.lang.String)

Double valueDouble = Doubles.tryParse(aPotentiallyCorruptedDoubleString);

런타임에 잘못된 형식의 문자열 입력이 다음에 null할당됩니다.valueDouble


"문자열을 구문 분석 할 수없는 경우 0.0을 리턴합니다" -Javadoc은 해당 주장을 지원하지 않습니다.
Tom

@Tom null 값을 반환합니다. Double 타입 0.0 타입으로 변환 가능 Double type – DYS 13 초 전 편집
DYS

1
자동으로 할 수는 없지만 스 니펫은 그렇게하지 않습니다.
Tom

1

u가 int 데이터 유형을 num 및 num2에서 int로 변환해야 할 때 문자열 번호를 두 배로 변환하는 데 사용했습니다. 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;
}


0

double.parseDouble ()을 사용할 수 있습니다.

String num = "10.1";
Double x = Double.parseDouble(num);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.