Upper Case Conversion Required

  • Thread starter Richard F.L.R.Snashall
  • Start date
R

Richard F.L.R.Snashall

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( );
}
 
M

Manish Pandit

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
 
R

Richard F.L.R.Snashall

Manish said:
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) ?

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.
 
M

Manish Pandit

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
Manish said:
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) ?

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.
 
R

Richard F.L.R.Snashall

Manish said:
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..

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.
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,009
Latest member
GidgetGamb

Latest Threads

Top