2015-01-12 3 views
0

Я выполняю контрольный тест, ничего не делая, поэтому результаты довольно быстрые.Сила для отображения регулярного десятичного числа

Вот мой код:

$time_start = microtime(true); 
//Do Nothing... 
$time = microtime(true) - $time_start; 

echo 'Took '.$time.' seconds<br>'; 

Проблема заключается в том, когда я пытаюсь повторить результат я получаю это:

Took 1.3828277587891E-5 seconds 

Я ожидал, чтобы получить регулярное десятичное число, как :

Took 0.000000008231 seconds 

Можно ли заставить php отображать его как правильное десятичное число?

+0

PHP переключится на использование научных rmat, основанный на настройке точности в вашем ini-файле: измените эту настройку или используйте [sprint()] (http://www.php.net/manual/en/function.sprintf.php), чтобы форсировать ненаучный формат дисплей –

+0

Возможный дубликат [Показать значение плавания без научной нотации] (http://stackoverflow.com/questions/10916675/display-float-value-wo-scientific-notation) –

+0

Аналогичный вопрос с хорошим ответом: http: /stackoverflow.com/a/10917464/19905 – ash108

ответ

1

Если вы хотите, чтобы ваши большие цифры, то попробуйте следующее:

//$i = gmp_init($time); // i think you need that only if you want convert a string to an int/flaot 
    echo gmp_strval($time); 

gmp_strval PHP> 4.0.4/PHP 5.

Mor информация о http://php.net/manual/en/function.gmp-strval.php

+0

Выглядит очень интересно, но ... Неустранимая ошибка: вызов неопределенной функции gmp_init() в ... – iprophesy

+0

Я предполагаю, что это моя PHP-версия, но я буду тестировать ее на более высокой версии ... :) Ответ принят! Это именно то, что я искал! – iprophesy

1

Вы можете использовать printf или sprintf функция. Вот пример из http://php.net/manual/en/function.sprintf.php

<?php 
$n = 43951789; 
$u = -43951789; 
$c = 65; // ASCII 65 is 'A' 

// notice the double %%, this prints a literal '%' character 
printf("%%b = '%b'\n", $n); // binary representation 
printf("%%c = '%c'\n", $c); // print the ascii character, same as chr() function 
printf("%%d = '%d'\n", $n); // standard integer representation 
printf("%%e = '%e'\n", $n); // scientific notation 
printf("%%u = '%u'\n", $n); // unsigned integer representation of a positive integer 
printf("%%u = '%u'\n", $u); // unsigned integer representation of a negative integer 
printf("%%f = '%f'\n", $n); // floating point representation 
printf("%%o = '%o'\n", $n); // octal representation 
printf("%%s = '%s'\n", $n); // string representation 
printf("%%x = '%x'\n", $n); // hexadecimal representation (lower-case) 
printf("%%X = '%X'\n", $n); // hexadecimal representation (upper-case) 

printf("%%+d = '%+d'\n", $n); // sign specifier on a positive integer 
printf("%%+d = '%+d'\n", $u); // sign specifier on a negative integer 

для вашего примера, вы можете использовать -для instance-:

<?php 
$time_start = microtime(true); 
//Do Nothing... 
$time = microtime(true) - $time_start; 

echo 'Took '.sprintf("%f",$time).' seconds<br>'; 

Вы можете даже изменить Прецизинность таким образом:

sprintf("%.1f",$time) // -> 0.0 seconds 

sprintf("%.10f",$time) // -> 0.0000059605 seconds 
Смежные вопросы