mysql履行時光為正數的緣由剖析。本站提示廣大學習愛好者:(mysql履行時光為正數的緣由剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql履行時光為正數的緣由剖析正文
<?php
list($usec, $sec) = explode(' ', microtime());
$timer = (float)$usec + (float)$sec;
mysql_query($query, $active_db);
list($usec, $sec) = explode(' ', microtime());
$stop = (float)$usec + (float)$sec;
$diff = $stop - $timer;
?>
$stop 和 $timer都是轉化後獲得的浮點數,年夜多半情形下,echo $stop 和 echo $timer獲得的成果用肉眼不雅察是雷同的,然則它們在盤算機中的存儲其實不雷同,所以成果不為0,也有能夠為負。
php手冊中提醒:
浮點數精度:
明顯簡略的十進制分數好像 0.1 或 0.7 不克不及在不喪失一點點精度的情形下轉換為外部二進制的格局。這就會形成凌亂的成果:例如,floor((0.1+0.7)*10) 平日會前往 7 而不是預期中的 8,由於該成果外部的表現實際上是相似 7.9999999999...。
這和一個現實有關,那就是弗成能准確的用無限位數表達某些十進制分數。例如,十進制的 1/3 釀成了 0.3333333. . .。
所以永久不要信任浮點數成果准確到了最初一名,也永久不要比擬兩個浮點數能否相等。假如確切須要更高的精度,應當應用隨意率性精度數學函數或許 gmp 函數。