John W. Krahn wrote:
> David wrote:
>>
>> brain dead approach:
>>
>> #!/usr/bin/perl -w
>> use strict;
>>
>> for(qw~ 0.203E-2 0.203E+9 0.203e-9
>> 0.20233E-12 0.123e+3 3435E+15 ~){
>>
>> /(\d+)E(.)(\d+)/i;
>> my $l = $2 eq '+' ? 0 : length($1) + $3;
>
> You shouldn't use the numerical scalars unless the match was successful.
>
> /(\d+)E(.)(\d+)/i and my $l = $2 eq '+' ? 0 : length($1) + $3;
it won't fail for the numbers i have for this test but yes, error checking
is generally almost always a good thing.
>
>
>> printf('%20s'. '%.' . $l . "f\n","$_ becomes ",$_);
>
> That could also be written as:
>
> printf "%20s%.*f\n", "$_ becomes ", $l, $_;
yes, whichever you prefer.
>
>
>> }
>
> Or, you could write it like this:
>
> for ( qw(0.203E-2 0.203E+9 0.203e-9 0.20233E-12 0.123e+3 3435E+15) ) {
> ( my $l = sprintf "%.18f", $_ ) =~ s/\.?0+$//;
> printf "%12s becomes %s\n", $_, $l;
> }
no. try it with 0.20233e-20.
david
--
$_=q,015001450154015401570040016701570162015401440041,,*,=*|=*_,split+local$";
map{~$_&1&&{$,<<=1,[EMAIL PROTECTED]||3])=>~}}0..s~.~~g-1;*_=*#,
goto=>print+eval
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]