Thomas Meinike: Zahl in 10er Potenz

Beitrag lesen

Hallo,

Gibt's denn da kein printf in PHP mit %e Format-Operator?

Den gibt es schon, wobei der Parameter nur in der englischen Doku steht [unter sprintf()].

Allerdings ist gerade dieser Parameter in aelteren PHP-Versionen buggy (gibt 00 beim Exponent aus) und kann auch nur Werte bis ~1e+308 verarbeiten. Die 600 Stellen des OP fallen dann durch. Man kann das etwa so loesen (hier nur fuer positive Werte probiert):

<?php

function format_zahlstr($zahlstr,$k)
{
  $hoch=strlen($zahlstr)-1;
  $gueltigeziffern=15;
  $kommastellen=$k;
  return number_format(substr($zahlstr,0,1).".".substr($zahlstr,1,$gueltigeziffern-1),$kommastellen)."e+".$hoch;
}

$test="987654321012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";

printf("%e",$test); // INFTo -- ohne die Endziffer 9 klappt es noch
print "<br>";
print format_zahlstr($test,5); // 9.87654e+308

?>

MfG, Thomas