On 29.08.2011 20:01, mamta81 wrote:

> when i give checkNumber( 33333335.2534566d); as input i get the

> following o/p

>

> number ------------------->3.33333352534566E7

> n3.33333352534566E7

> Is a decimal number

> index1

> dec 33333352534566E7

> only 6 digits allowed after decimal

> num 3

>

>

> 1) what happens to my input for which I get a wrong index of ". "?
But you *did* get the correct index.

> 2) Is there any other way to find the number of digits before and

> after decimal?
I don't know. You can try by first formatting the String the way you

expect it to be shown, which also includes defining the maximum number

of fraction digits.

For example:

public void checkNumber(double number) {

// UK locale definitely has "." symbol for decimal point

NumberFormat nf = NumberFormat.getInstance(Locale.UK);

nf.setGroupingUsed(false); // don't group digits

nf.setMaximumFractionDigits(MAX_FRACTION_DIGITS);

String numberString = nf.format(number);

String[] nsArray = numberString.split("\\.");

System.out.println("Before decimal point: " + nsArray[0].length());

System.out.println("After decimal point: " + nsArray[1].length());

}

This will work as expected most of the time.

To see when and why it

won't work as expected, read some literature about floating point numbers.

And now please answer this. Why are you trying to do that? What's the

underlying reason?