my @si = qw"T G M k * m u n p";
$si[4] = '';

sub normalize {
  my $a = shift;
  my ($number, $exponent) = $a =~ /(.*)e?(.*)/;
  while ($number >= 1000) {
    $number /= 1000;
    $exponent += 3;
  }
  while ($number and ($number < 1)) {
    $number *= 1000;
    $exponent -= 3;
  }
  return ($a,'') unless $exponent;
  while (1) {
    return ($number, @si[4 - $exponent/3]) unless ($exponent % 3);
    $number *= 10;
    $exponent -= 1;
  }
}


my $a = 1e-7;
my ($number, $exponent) = normalize($a);
print " $a = $number $exponent\n";

$a = 1e7;
($number, $exponent) = normalize($a);
print " $a = $number $exponent\n";

$a = 10000;
($number, $exponent) = normalize($a);
print " $a = $number $exponent\n";

$a = 0;
($number, $exponent) = normalize($a);
print " $a = $number $exponent\n";

$a = 1000;
($number, $exponent) = normalize($a);
print " $a = $number $exponent\n";


- Flávio Soibelmann Glock

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

Reply via email to