# String Fraction to Number

Discussion in 'Java' started by Peter, May 6, 2004.

1. ### PeterGuest

Does anyone have an example of how to convert a String "26 1/2" to double 26.5 ?

Peter

Thank You

Peter, May 6, 2004

2. ### VisionSetGuest

"Peter" <> wrote in message
news:...
> Does anyone have an example of how to convert a String "26 1/2" to double

26.5 ?

double myDouble;
if(myString.equals("26 1/2")) myDouble = 26.5;

--
Mike W

VisionSet, May 6, 2004

3. ### Rob ShepherdGuest

Peter wrote:
> Does anyone have an example of how to convert a String "26 1/2" to double 26.5 ?
>
> Peter
>
> Thank You

From the archives I dug out this method.
Last time i used it it worked (for my input data)
....
public static double fracNumericStringToDouble(String str)
{
double mydouble;

int firstpartindex = str.indexOf(" ");
String wholepart = str.substring(0, firstpartindex);

System.out.println(wholepart);

int secondpartindex = str.indexOf("/");
String numerator = str.substring(firstpartindex+1, secondpartindex);
System.out.println(numerator);

String denominator = str.substring(secondpartindex+1, str.length());
System.out.println(denominator);

mydouble = (Double.parseDouble(numerator) / Double.parseDouble(denominator));
mydouble += Double.parseDouble(wholepart);

return mydouble;
}
....

HTH

Rob

Rob Shepherd, May 6, 2004
4. ### antroyGuest

Should perhaps alter it as follows to take into account whole numbers:

Rob Shepherd wrote:
....
> public static double fracNumericStringToDouble(String str)
> {
> double mydouble;
>
> int firstpartindex = str.indexOf(" ");

if (firstpartindex == -1) firstpartindex = str.length();

> String wholepart = str.substring(0, firstpartindex);
>
> System.out.println(wholepart);
> int secondpartindex = str.indexOf("/");

String numerator = "1";
String denominator = "1";

if (secondpartindex != -1){

numerator = str.substring(firstpartindex+1,
> secondpartindex);
> System.out.println(numerator);
>

denominator = str.substring(secondpartindex+1,
> str.length());
> System.out.println(denominator);
>

}

> mydouble = (Double.parseDouble(numerator) /
> Double.parseDouble(denominator));
> mydouble += Double.parseDouble(wholepart);
>
> return mydouble;
> }
> ...
>

Again not tested, and could of course be cleaned up (the String
numerator = "1"; is a bit of a hack for example).

--
Ant...

antroy, May 6, 2004
5. ### PeterGuest

"VisionSet" <> wrote in message news:<i1smc.59\$>...
> "Peter" <> wrote in message
> news:...
> > Does anyone have an example of how to convert a String "26 1/2" to double

> 26.5 ?
>
> double myDouble;
> if(myString.equals("26 1/2")) myDouble = 26.5;

Thanks for your help, but that's not exactly what I am looking for.
The String number can be any number with a fraction not just "26 1/2".
I am looking for a conversion function.

Peter, May 6, 2004
6. ### Roedy GreenGuest

On 6 May 2004 06:50:08 -0700, (Peter) wrote or quoted
:

>Does anyone have an example of how to convert a String "26 1/2" to double 26.5 ?

parse the thrtee pieces, convert to double and compute value =
integral + numerator / demoninatator

--
Coaching, problem solving, economical contract programming.
See http://mindprod.com/jgloss/jgloss.html for The Java Glossary.

Roedy Green, May 6, 2004
7. ### Mason BryantGuest

"VisionSet" <> wrote in message news:<i1smc.59\$>...
> "Peter" <> wrote in message
> news:...
> > Does anyone have an example of how to convert a String "26 1/2" to double

> 26.5 ?
>
> double myDouble;
> if(myString.equals("26 1/2")) myDouble = 26.5;

Cute. You might also try the following (hackish) solution.

String l_input = "26 1/2";
String[] l_parts = l_input.split("(\\s)+");
double l_value = 0;
for(int i = 0; i < l_parts.length; i++) {

String l_fractionParts[] = l_parts.split("(\\D)+");
if(1 == l_fractionParts.length) {
l_value += Double.parseDouble(l_fractionParts[0]);
} else if(2 == l_fractionParts.length) {
l_value += Double.parseDouble(l_fractionParts[0]) /
Double.parseDouble(l_fractionParts[1]);
}
}
System.out.println(l_value);

Mason Bryant, May 6, 2004