Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我的float在MYSQL中存储为.9999,而它';它大于1?_Php_Mysql_Microtime - Fatal编程技术网

Php 为什么我的float在MYSQL中存储为.9999,而它';它大于1?

Php 为什么我的float在MYSQL中存储为.9999,而它';它大于1?,php,mysql,microtime,Php,Mysql,Microtime,我在MySQL数据库中以浮点(4,4)形式存储进程时间 $process_time在输出到命令行时总是正确显示,但是如果它的值大于1,它将以.9999的形式存储到mysql中 给出了什么?浮点(4,4)表示总共4位数字,其中4位在小数点后。 例如,你必须换成10,4 MySQL允许非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。此处,“(M,D)”表示可存储的数值最多为M位,其中D位可能位于小数点之后 从页面: MySQL允许非标准语法:FLOA

我在MySQL数据库中以浮点(4,4)形式存储进程时间

$process_time在输出到命令行时总是正确显示,但是如果它的值大于1,它将以.9999的形式存储到mysql中

给出了什么?

浮点(4,4)表示总共4位数字,其中4位在小数点后。 例如,你必须换成10,4

MySQL允许非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。此处,“(M,D)”表示可存储的数值最多为M位,其中D位可能位于小数点之后

从页面:

MySQL允许非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE 精度(M,D)。在这里,“(M,D)”表示可以使用最多 至M位,其中D位可在小数点后 指向例如,定义为FLOAT(7,4)的列如下所示 -显示时为999.9999。MySQL在存储值时执行舍入,因此如果在浮点(7,4)列中插入999.00009,则近似值 结果是999.0001


浮点数(4,4)是指一个4位数字,所有4位数字都位于小数点右侧;0.9999是它所能容纳的最大数字。

这不是对你问题的直接回答,但你不应该使用浮点数。四舍五入问题是一个重要问题。如果需要精度,请使用
十进制。

这是因为要传递的值。小数点后允许有4位数字,但总共只有4位,因此它最多可以存储.9999。将其更改为
float(5,4)
以正确保存,或者如果您认为需要更大的数字,则增加5。

我不太明白:您是否存储开始和结束时间或两者的差异?如何计算差异:在PHP或Mysql中?关于比较浮点值的注意事项:浮点非常适合存储时间,因为它们的精度取决于它们的精度,为1E-5(单精度)或1E-10(双精度)(值都是IIRC,但你应该知道)。因此,将精度为1E-3的值存储在浮点中不会造成任何伤害。应该可以在这样的变量中存储大于或等于1的值。
$start_time = microtime( TRUE );

// things happen in my script

$end_time = microtime( TRUE );
$process_time = $end_time - $start_time;

// insert $process time into mysql table