String Fraction to Number

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

  1. Peter

    Peter Guest

    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
    #1
    1. Advertising

  2. Peter

    VisionSet Guest

    "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
    #2
    1. Advertising

  3. Peter

    Rob Shepherd Guest

    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;
    }
    ....

    Please test

    HTH

    Rob
    Rob Shepherd, May 6, 2004
    #3
  4. Peter

    antroy Guest

    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;
    > }
    > ...
    >
    > Please test


    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
    #4
  5. Peter

    Peter Guest

    "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
    #5
  6. Peter

    Roedy Green Guest

    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

    --
    Canadian Mind Products, Roedy Green.
    Coaching, problem solving, economical contract programming.
    See http://mindprod.com/jgloss/jgloss.html for The Java Glossary.
    Roedy Green, May 6, 2004
    #6
  7. Peter

    Mason Bryant Guest

    "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
    #7
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Jam
    Replies:
    2
    Views:
    729
  2. Replies:
    4
    Views:
    381
    Guillaume
    Nov 20, 2005
  3. Sam Holden

    Re: fraction reducing funtion

    Sam Holden, Aug 3, 2003, in forum: C++
    Replies:
    2
    Views:
    358
    Sam Holden
    Aug 4, 2003
  4. ME
    Replies:
    1
    Views:
    264
  5. Schklerg
    Replies:
    7
    Views:
    104
    Mike Scirocco
    Nov 30, 2003
Loading...

Share This Page