2012-11-06 4 views
7

은 내가 예컨대분수 형식의 문자열을 Java의 소수점 또는 부동 소수점으로 변환하는 방법?

"1/4","2/3" 

내 데이터베이스에서 가져 오는하고 몇 가지 문자열 값을 가지고 있지만 안드로이드의 ListView의 내용으로 표시하는 동안 나는 0.25, 0.66로 표시해야합니다.

이제는 문자열을 분할 한 다음 개별 문자열을 숫자로 변환하고 을 결과로 나누십시오.

알고 계시나요? Double.valueOf 또는 parseDouble 종류의 직능이 있습니까?

+0

솔루션을 찾으려면 요구 사항이 불합리한 것처럼 보입니다. 그런 식으로하는 것이 가장 좋은 방법 인 것처럼 보입니다. –

+0

예 gabriel, 심지어 나는 누군가가 데이터베이스에 1/4 및 2/3 값을 저장하는 이유를 생각하고 있었지만 클라이언트의 관심사가 그렇듯이 값이 너무 많아서 해결 방법이 필요했습니다. –

+0

내 의견은 데이터가 저장되는 방식에 관한 것이 아니고 (별난 일을 직접 본 것), 문제를 해결하기 위해 스플릿 ("/")을 사용하는 것에 대한 제한 사항에 관한 것입니다. –

답변

-1

SpannableStringBuilder test = new SpannableStringBuilder(); 
test.append("\n"); 
test.append(Html.fromHtml("<sup>5</sup>/<sub>9</sub>")); 
test.append("\n"); 
+0

당신은 OP가 틀렸어. 나는 두려워. –

1

당신은 split("/")를 사용하여 분수를 나눌 수 사용해보십시오. 그런 다음 값을 Double으로 변환하고 나누기를 수행 할 수 있습니다. 나는 안드로이드에 대해 모른다. 자바에서 그렇게 할 수있다.

+1

OP를 인용 : _ "이제는 문자열을 나눠서 개별 문자열을 숫자로 변환하고 그 결과를 나눌 수 없습니다."_ – Less

+0

좋아, 미안. 하지만 다른 쉬운 방법은 모르겠다. – jmrodrigg

8

"문자열을 분할 한 다음 개별 문자열을 숫자로 변환하고 나눕니다. 결과가"이되도록 나누지 않습니까?

double parse(String ratio) { 
    if (ratio.contains("/")) { 
     String[] rat = ratio.split("/"); 
     return Double.parseDouble(rat[0])/Double.parseDouble(rat[1]); 
    } else { 
     return Double.parseDouble(ratio); 
    } 
} 

그것은 또한 당신이 비율 자바에서

parse("1/2") => 0.5 
parse("3/7") => 0.42857142857142855 
parse("1") => 1.0 
1

의 정수 표현이있는 경우에 대해 설명합니다

는 정말 간단한 해결책 그렇게 어떤 내장 함수를 인식하지 않다 , JavaScript의 평가판과 같은 것이 없으므로 this을 사용할 수 있습니다.

0

그런 것이 없다고 생각합니다. 하지만 왜 이런 식으로 자신 만의 함수를 만들지는 모르겠다.

public static double fromStringFraction(String fraction){ 
    String[] fractionArray = fraction.split("/"); 
    try { 
     if (fractionArray.length != 2){ 
      if (fractionArray.length == 1){ 
       return Double.parseDouble(fractionArray[0]); 
      } 
      else { 
       return 0d; 
      } 
     } 
     double b = Double.parseDouble(fractionArray[1]); 
     if (b==0d){ 
      return 0d; 
     } 
     Double a = Double.parseDouble(fractionArray[0]); 
     return a/b; 
    } 
    catch (NumberFormatException e){ 
     return 0d; 
    } 
} 
+0

안녕하세요 gabga, 내가 alredy 쓴, 내가 그것을 분할하여 결과를 얻을 수 있지만, 그런 일을하고 싶지 않았어. 어쨌든 고마워. –

3

나는 지난 2 년 동안이 문제를 해결했다고 상상한다. 그러나 Apache commons fraction class을 사용할 수 있습니다.

그것은 파서 내장되어 있습니다, 그래서 당신이 인 경우에 전화를

:

Fraction fraction = Fraction.getFraction("1/2"); 
double d = fraction.doubleValue(); 

다음 d를 0.5를 포함해야합니다.

관련 문제