Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / September 2006

Tip: Looking for answers? Try searching our database.

Upper Case Conversion Required

Thread view: 
Richard F.L.R.Snashall - 08 Sep 2006 19:06 GMT
I wrote the code snip below to do some extra checking on string to
double conversion.  I did not expect the need to call toUpperCase.
What was I not anticipating?  It just didn't seem logical to me,
given the number of tools out there that create their floating point
numbers with a lower case "e".

-------------------------

    private java.util.Locale myLocale =
      java.util.Locale.getDefault( );

    private java.text.NumberFormat DFormat =
      java.text.NumberFormat.getInstance( myLocale );
    private java.text.ParsePosition DPosition =
      new java.text.ParsePosition( 0 );

    public double DparseDouble( String S ) throws NumberFormatException
        {
        // Trim it and check for a blank string.
        // Upper case is needed to match the "E" in scientific notation.

        String T = S.trim( ).toUpperCase( );
        if( T.length( ) == 0 )
            {
            throw new NumberFormatException( );
            }

        // Otherwise, try to parse it.

        DPosition.setIndex( 0 );
        Number parsedNumber = DFormat.parse( T, DPosition );

        // Failure will occur if none or only a part of the string
        // is properly parsed.

        if( DPosition.getIndex( ) < T.length( ) )
            {
            throw new NumberFormatException( );
            }

        return parsedNumber.doubleValue( );
        }
Manish Pandit - 09 Sep 2006 02:19 GMT
Couldnt help but ask - Why go through all this to convert a string to a
double? You can do the same by new Double(yourString).doubleValue() or
Double.valueOf(yourString).doubleValue().

Is this that you are trying to parse out a double from an alphanumeric
string, or you need the double in a special format (like with a
lowercase e) ?

-cheers,
Manish

> I wrote the code snip below to do some extra checking on string to
> double conversion.  I did not expect the need to call toUpperCase.
[quoted text clipped - 38 lines]
>          return parsedNumber.doubleValue( );
>          }
Richard F.L.R.Snashall - 09 Sep 2006 02:47 GMT
> Couldnt help but ask - Why go through all this to convert a string to a
> double? You can do the same by new Double(yourString).doubleValue() or
[quoted text clipped - 3 lines]
> string, or you need the double in a special format (like with a
> lowercase e) ?

It is user input.  I need to (for my own piece of mind) be sure that the
user has input "a double, a whole double, and nothing but a double";-)

Most of the internal routines didn't seem to fit the bill.  Lower case
"e" was just [to me] a user-friendly allowance.
Manish Pandit - 09 Sep 2006 06:39 GMT
Hi,

You should be okay if the user enters a 'e' or an 'E'. For example,
Double.valueOf("1.23456789e9").doubleValue() will return 1.23456789E9
and so will Double.valueOf("1.23456789E9").doubleValue().

Maybe I am missing something again..

Also, just a tip regarding null-proofing the blank check for the string
- you might want to check for null before trimming it - more like if (
S !=null && S.trim().length() >0 ){ .... }

-cheers,
Manish

> > Couldnt help but ask - Why go through all this to convert a string to a
> > double? You can do the same by new Double(yourString).doubleValue() or
[quoted text clipped - 9 lines]
> Most of the internal routines didn't seem to fit the bill.  Lower case
> "e" was just [to me] a user-friendly allowance.
Richard F.L.R.Snashall - 09 Sep 2006 09:27 GMT
> Hi,
>
[quoted text clipped - 3 lines]
>
> Maybe I am missing something again..

I was using Double.parseDouble.  According to the documentation:

"static double     parseDouble(String s)
          Returns a new double initialized to the value represented by
the specified String, as performed by the valueOf method of class Double."

That failed to work properly when the user input "e".

> Also, just a tip regarding null-proofing the blank check for the string
> - you might want to check for null before trimming it - more like if (
> S !=null && S.trim().length() >0 ){ .... }

I'll keep that in mind.


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.