Michael - Hannover: 2 Probleme mit "microtime()"

Hi !

ich habe ein Problem mit den Rückgabewerten der Funktion microtime()

1.

list($low, $high) = explode(" ", microtime(1));
(double)$laufzeit = (double)$high + (double)$low;
echo (double)$laufzeit;

theoretisch müßte nun in $laufzeit etwas stehen wie xxx.... ,123456
aber...

$high = 1082459384
$low = 0.032865
$laufzeit = 1082459384.0329 <--- ???

stattdessen steht in $laufzeit grds. ein Wert auf 4 Nachkommastellen gerundet
das ist umso verwirrende, als das in $low ein (richtiger) 6stelliger Wert steht (Mikrosekunden eben)

mein zweites Problem

list($low, $high) = explode(" ", microtime(1));
$used = $high + $low;
(double)$laufzeit = (double)$used - (double)$laufzeit;

jetzt steht in $Laufzeit plötzlich
0.00022602081298828

MfG
Michael

  1. Hi!

    ich habe ein Problem mit den Rückgabewerten der Funktion microtime()

    list($low, $high) = explode(" ", microtime(1));
    (double)$laufzeit = (double)$high + (double)$low;
    echo (double)$laufzeit;

    theoretisch müßte nun in $laufzeit etwas stehen wie xxx.... ,123456
    aber...

    $high = 1082459384
    $low = 0.032865
    $laufzeit = 1082459384.0329 <--- ???

    stattdessen steht in $laufzeit grds. ein Wert auf 4 Nachkommastellen gerundet
    das ist umso verwirrende, als das in $low ein (richtiger) 6stelliger Wert steht (Mikrosekunden eben)

    Guck mal in Deine php.ini:

    ; The number of significant digits displayed in floating point numbers.

    da steht bei mir:

    precision    =  12

    entsprechend werden mir nur 2 Nachkommastellen ausgegeben.

    Bei Dir steht da vermutlich 14.

    mein zweites Problem

    list($low, $high) = explode(" ", microtime(1));
    $used = $high + $low;
    (double)$laufzeit = (double)$used - (double)$laufzeit;

    jetzt steht in $Laufzeit plötzlich
    0.00022602081298828

    Es geht hier nur um die Ausgabe, intern ist der Wert länger gespeichert. Du kannst es ganz einfach sehen, wenn Du z.B. mal mit number_format() mal ein paar mehr Nachkommastellen entlockst ;-)
    Ist aber egal, beim rechnen wird die komplette Zahl genommen - sofern Du das nicht vorher in einen String konvertiert hast.

    Du brauchst übrigens nicht _alles_ in (double) zu konvertieren, PHP ist nicht blöd ;-)

    Grüße
    Andreas

    --
    SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/