mysql执行时间为负数的原因分析
2023-06-13 09:14:24 时间
<?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函数。
相关文章
- MySQL用户登录失败的常见原因分析(mysql用户登录)
- MySQL Status Performance_schema_session_connect_attrs_lost 数据库状态作用意思及如何正确
- MySQL触发器:优化数据库执行时间(mysql触发器时间)
- MySQL数据库迁移脚本:一步步构建你的梦想(mysql数据库迁移脚本)
- MySQL安装指南:从下载到安装(mysql下载安装)
- MySQL 入门指南:知乎上你必须知道的答案(mysql入门知乎)
- 分析MySQL深入浅出:文本分析实战(mysql文本)
- MySQL如何设置安全的密码?(mysql怎么设置密码)
- MySQL数据库之合并双字段(mysql两个字段合并)
- 类型MySQL中的二进制数据类型特性分析(mysql二进制数据)
- MySQL数据库执行的原理及过程简介(mysql数据库执行过程)
- 解决MySQL数据库中乱码问题(mysql乱码怎么解决)
- MySQL表:添加新数据记录(mysql 表中插入数据)
- 型MySQL DB类型分析:深度挖掘新的可能性(mysql db 类)
- MySQL数据库:我们的强大助力(mysql数据库的作用)
- MySQL表的最大行数限制(mysql表最大行数)
- MySQL测试数据库:简单快捷的稳定性分析(mysql 测试数据库)
- MySQL日期分组分析技巧(mysql日期分组)
- MySQL分区表性能分析——优势与劣势(mysql分区表优劣分析)
- 利用MySQL中的Using进行优化查询(mysql 中using)
- MySQL中AND的使用方法及含义解析(mysql中and的含义)
- MySQL不同版本的比较分析(mysql个版本的区别)
- MySQL执行超时之恶果BAT无能为力(bat执行mysql超时)
- 35岁学习MySQL是否值得一试(35岁学mysql有用吗)
- MySQL有文件上传限制吗(mysql上传文件限制吗)