PHP中如何对浮点数比较,方法是什么
Admin 2022-07-08 群英技术资讯 1233 次浏览
这篇文章主要介绍“PHP中如何对浮点数比较,方法是什么”的相关知识,下面会通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP中如何对浮点数比较,方法是什么”文章能帮助大家解决问题。前言
本文主要给大家介绍了关于利用php如何比较浮点数是否相等的相关内容,下面话不多说了,来一起看看详细的介绍吧
看下面这段代码, 0.9+0.1 的相加结果与 1 进行比较
<?php
$a = 0.9;
$b = 0.1;
$total = $a + $b;
var_dump($total);
if (1 == $total) {
echo "true";
} else {
echo "false";
}
echo "\n";
if (1.0 == $total) {
echo "true";
} else {
echo "false";
}
?>
打印结果是:
float(1)
true
true
再看下面这段代码, 0.6+0.1+0.1+0.1+0.1 的相加结果与 1 进行比较
<?php
$a = 0.6;
$b = 0.1;
$c = 0.1;
$d = 0.1;
$e = 0.1;
$total = $a + $b + $c + $d + $e;
var_dump($total);
if (1 == $total) {
echo "true";
} else {
echo "false";
}
echo "\n";
if (1.0 == $total) {
echo "true";
} else {
echo "false";
}
?>
打印结果是:
float(1)
false
false
为什么这两段代码结果不一样?把两段代码里面的 $total 分别以精度20位的形式打印出来 printf("%.20f\n", $total); ,结果如下:
1.00000000000000000000
0.99999999999999988898
出现这个问题是因为浮点数计算涉及精度。
关于php里面的浮点数, 官方手册 上有相关解释
看官方手册里面关于浮点数的提示,如下图所示。里面提到 永远不要比较两个浮点数是否相等
那么有什么办法可以比较两个浮点数是否相等呢?
方法一、
看如下代码示例
<?php
$a = 0.6;
$b = 0.1;
$c = 0.1;
$d = 0.1;
$e = 0.1;
$epsilon = 0.00001;
$total = $a + $b + $c + $d + $e;
if(abs($total-1) < $epsilon) {
echo "true";
} else {
echo "false";
}
echo "\n";
if(abs($total-1.0) < $epsilon) {
echo "true";
} else {
echo "false";
}
?>
结果输出为:
true
true
方法二、
<?php
$a = 0.6;
$b = 0.1;
$c = 0.1;
$d = 0.1;
$e = 0.1;
$total = $a + $b + $c + $d + $e;
if(1.0 == round($total, 5)) {
echo "true";
} else {
echo "false";
}
?>
结果输出为:
true
总结
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
php定义常量方法的区别:1、const是一种语言结构,define()是一个函数,const编译比define()快。2、define()声明常量,常量名是字符串类型,可以动态拼接,可以用表达式命名,const只能用普通常量名。
在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP会将其在内存中销毁;这是PHP的GC垃圾处理机制,防止内存溢出。
这篇文章主要介绍了Thinkphp5.0 框架Model模型简单用法,结合实例形式分析了thinkPHP5.0框架模型Model常用方法的简单使用技巧,需要的朋友可以参考下
php json_encode有中文乱码怎么解决?很多朋友在使用json_encode处理中文的时候,会出现不可读,乱码的情况,这是因为中文会被编码导致的,不要想中文被转码,有以下解决方法:
用于生产环境中的PHP需要对其进行优化,让PHP自身发挥更好的性能,除了写好PHP代码,还要配置好php-fpm以及php.ini调优。本文从内存、OPcache、上传、会话以及安全等方面讲解php.ini的配置调优。内存优化运行PHP时需要关心每个PHP进程要使用多少内存,php.ini中的memory_limit设置用于设定单个PHP进程可以使用的系统内存最大值。这个设
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008