my $dec = 0.99982928833123; my $len = length( ( split /\./, $dec )[1] ); printf "%.${len}e\n", $dec; # 9.99829288331230e-001