Hi.

I think you have two separate problems here, right?

Gufranul Haque wrote:
> Hello all,
>
> I have a series of numbers 20.45,-2.00,45.450,-30.390
>
> 20.45 - length is 5
> -2.00 - length is 4
>
> I need to calculate the length of each number for formatting purposes.

FIrst you need to decide how many decimal places you're interested in.
Since you've used both 2 and 3 places here so I'll go for 3. To find the
length of the largest number, use sprintf like this:

    my $n1 = -30.390;
    my $large = sprintf "%0.3f", $n1;

The zero will make the string as short as possible, but long enough for
the number. Now format your smaller number to match the length:

    my $n2 = $n1 * 0.1;
    my $small = sprintf "%*.3f", length $large, $n2;


The * will make sprintf take the field length from the parameter
list, where we use the length of the other number. Now print them
out:

    print $large, "\n";
    print $small, "\n";

output:

    -30.390
     -3.039


I think this is what you want.

> I am trying to split the each number into an array of charcters and
> then calculating the length of the array
>
> my @digits = split(/\S/, @number[$i])
> my @length = @digits


I've just clicked what you're doing here! The problem is already
solved, above, but to split a string into an array of characters,
split on the null string:

    my @digits = split '', $number[$i];

now get the length of the array by

    my $length = @digits;

you were simply copying your @digits to another array, @length.

> but somehow it doesn't seem to be working. Can someone tell me the
> corect expression to use.

Bt you can easily find the length of a string with 'length' as I did
above.

Hope this helps,

Rob




-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to