[PHP] Microtime geeft maar 2 decimalen terug

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • NeFoRcE
  • Registratie: Mei 2004
  • Laatst online: 13-10 09:54

NeFoRcE

Hallo? Bent u daar?

Topicstarter
Heren,

Wie kan mij uitleggen waarom op server1 de functie:

code:
1
microtime(true)


2 decimalen teruggeeft, en op server2, 4 decimalen? De code is verder exact gelijk...

Is er een instelling of een versie in PHP wat dit doet?

Professioneel Heftruck Syndroom


Acties:
  • 0 Henk 'm!

  • dylan_
  • Registratie: April 2015
  • Laatst online: 24-09 09:04
Welke PHP versies? En wat staat er in je php.ini?

Acties:
  • 0 Henk 'm!

  • Sleepkever
  • Registratie: Juni 2007
  • Laatst online: 14:25
Uit de man page van php, wat het eerste zoekresultaat is als je op "php microtime" zoekt...
A lot of the comments here suggest adding in the following way: (float)$usec + (float)$sec
Make sure you have the float precision high enough as with the default precision of 12, you are only precise to the 0.01 seconds.
Set this in you php.ini file.
precision = 16
Waar had je zelf al naar gekeken en geprobeerd voordat je de vraag hier klakkeloos neerzette?

Acties:
  • 0 Henk 'm!

  • NeFoRcE
  • Registratie: Mei 2004
  • Laatst online: 13-10 09:54

NeFoRcE

Hallo? Bent u daar?

Topicstarter
server1 draait "PHP Version 5.5.9-1ubuntu4.9"

Server2 draait iig centOS, welke versie kan ik zo niet achterhalen. Geen toegang toe op dit moment :(
Sleepkever schreef op vrijdag 12 juni 2015 @ 16:46:
Uit de man page van php, wat het eerste zoekresultaat is als je op "php microtime" zoekt...

[...]


Waar had je zelf al naar gekeken en geprobeerd voordat je de vraag hier klakkeloos neerzette?
Ah, dat had ik nog niet gezien, die man page wel al, maar die reactie heb ik dan over 't hoofd gezien. Dank!

[ Voor 61% gewijzigd door NeFoRcE op 15-06-2015 08:57 ]

Professioneel Heftruck Syndroom


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

NeFoRcE schreef op vrijdag 12 juni 2015 @ 16:41:
Heren,

Wie kan mij uitleggen waarom op server1 de functie:

code:
1
microtime(true)


2 decimalen teruggeeft, en op server2, 4 decimalen? De code is verder exact gelijk...
Een functie die een float returnt (wat microtime(true) doet), geeft geen "decimalen" terug. Waar het fout gaat is de omzetting van die float naar tekst (oftewel je uitvoer, en dus niet bij de functie zelf), en daarbij wordt standaard idd de precision uit php.ini gebruikt. Beter negeer je standaard formatting en specificeer je expliciet hoe de float geformat moet worden, bijvoorbeeld met http://php.net/sprintf

PHP:
1
echo sprintf("%.6f", microtime(true)); // 6 decimalen


(natuurlijk zou je hier ook direct printf() kunnen gebruiken ipv de uitvoer van sprintf te echo'en, maar het gaat om het idee)

[ Voor 3% gewijzigd door .oisyn op 15-06-2015 17:47 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • NeFoRcE
  • Registratie: Mei 2004
  • Laatst online: 13-10 09:54

NeFoRcE

Hallo? Bent u daar?

Topicstarter
Mijn dank is groot! Zo leer je nog eens wat. Wist niet dat sprintf zo krachtig was. Thanks, je uitleg is 100% duidelijk :)

Professioneel Heftruck Syndroom

Pagina: 1