2 Probleme mit "microtime()"
Michael - Hannover
- php
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
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