PHP取整函数大揭秘:round、ceil、floor你了解多少?

article/2025/8/11 19:25:35

话说那天,我正在写一个PHP项目,需求是要处理一些浮点数,然后进行各种花样取整。你知道的,浮点数这东西,搞不好就是个坑。于是我掏出了我的工具箱,准备好好研究一下PHP的取整函数。

最常用的就是round函数了。这个函数简单直接,就是四舍五入。比如,echo round(3.14159, 2);输出3.14,小数点后保留两位,妥妥的。但是,你可能会觉得这太简单了,没什么技术含量。别急,往下看。

接下来是ceilfloor,这两个函数是取整的极端派。ceil是“天花板函数”,顾名思义,不管小数点后面是什么,统统往上取整。比如,echo ceil(3.14159);输出4,不管你小数点后面是14159还是9,ceil统统给你加到1。而floor则是“地板函数”,和ceil相反,往下取整。echo floor(3.999);输出3,不管你怎么靠前,floor就是不动如山。

但是,你以为这就是全部了吗?不不不,PHP还提供了一个非常有趣的函数,叫intval。这个函数是直接把浮点数转换成整数,不管你是正的还是负的。比如,echo intval(3.14159);输出3echo intval(-3.999);输出-3。没错,它就是这么直接,没有任何弯弯绕绕。

现在,我们来看一个稍微复杂点的例子。假设你有一堆浮点数,你需要对它们进行四舍五入,但是有些情况下,你希望它不是简单的四舍五入,而是总是往某个方向取整。比如,在处理钱的时候,你总是希望多收一点,而不是少收。这时候,你可以自己写一个自定义的取整函数。

function alwaysUp($number) {

return ceil($number 100) / 100;

}

echo alwaysUp(3.14159); // 输出3.15

看到了吗?这个alwaysUp函数总是把小数往大取整,即使小数点后面是1,它也会给你加到100。这在某些特定场景下非常有用。

再来看一个例子,假设你需要对一组数进行四舍五入,但是你需要根据某些条件来决定是往大取整还是往小取整。比如,如果这个数是正数,你希望往上取整,如果是负数,你希望往下取整。这时候,你可以这样写:

function conditionalRound($number) {

if ($number > 0) {

return ceil($number);

} else {

}

}

echo conditionalRound(3.14159); // 输出4

看到了吗?这个conditionalRound函数根据数的正负来决定取整方向,非常灵活。

说到这里,你可能已经发现了,PHP的取整函数并不是一维的,而是可以在不同的维度上进行灵活运用。你可以根据具体的需求,选择合适的函数,甚至自己写一个函数来实现特定的取整逻辑。

假设你有一个数组,里面存了一堆浮点数,你需要对这些数进行取整,然后把它们存到另一个数组里面。你可以这样写:

$numbers = array(3.14159, -3.999, 2.71828, -1.61803);

$roundedNumbers = array();

foreach ($numbers as $number) {

$roundedNumbers[] = round($number, 2);

}

print_r($roundedNumbers);

输出是:

Array

(

[0] => 3.14

[1] => -4

[2] => 2.72

[3] => -1.62

)

看到了吗?这个代码片段把数组里面的每个浮点数都进行四舍五入,并保留两位小数,然后存到新的数组里面。

我们再来看一个稍微复杂点的例子。假设你有一个浮点数,你需要对这个数进行四舍五入,但是你需要保留三位小数,而且你需要根据某些条件来决定是往大取整还是往小取整。function complexRound($number, $decimalPlaces) {

$multiplier = pow(10, $decimalPlaces);

return ceil($number $multiplier) / $multiplier;

}

}

echo complexRound(3.14159, 3); // 输出3.142

看到了吗?这个complexRound函数非常灵活,可以根据浮点数的正负和保留的小数位数来决定取整方向。

总结一下,PHP的取整函数不仅仅是roundceilfloorintval,你还可以根据具体的需求,自己写一些自定义的取整函数。这些函数可以帮助你在处理浮点数的时候,更加灵活和精确。掌握了这些函数,你就可以在处理浮点数的时候,不再害怕踩坑了。

好了,今天的分享就到这里。如果你有其他问题,欢迎在评论区留言。点赞、转发、打赏,别忘了,下次再见!


http://www.hkcw.cn/article/gJuWnnxWnl.shtml

相关文章

《UDS协议从入门到精通(UDS速查手册)》(完结撒花版)

总目录:《UDS协议从入门到精通(UDS速查手册)》(完结撒花版) 前言一、UDS简介1.1 从汽车诊断说起1.2 两种常见的诊断协议:OBD & UDS 二、相关术语介绍2.1 Service ID(SID)2.2 诊断…

静态路由配置

一.静态路由的了解 1.静态路由简介 静态路由(Static Routing)是一种手动配置的路由方式,管理员通过手动定义路由表中的条目来指定数据包的转发路径。与动态路由(如 OSPF、BGP 等)不同,静态路由不会自动…

php入门教程(超详细,一篇就够了!!!)

前言 本章节主要学习PHP概念、PHP环境搭建、基本语法、PHP函数、PHP文件管理、PHP操作MySQL数据库等知识点,收录于PHP基础系列。该系列主要讲解PHP相关知识点,欢迎童鞋们互相交流。觉得不错可以三连订阅喔。 目录 一 概述 二 环境搭建 1. 开发环境…

一文弄懂 YOLOv8网络结构解读 、yolov8.yaml配置文件详细解读与说明、模型训练参数详细解析 通俗易懂!入门必看系列!

看这一篇就够了。本文内含YOLOv8网络结构图 yaml配置文件详细解读与说明 训练教程 训练参数设置参数解析说明等一些有关YOLOv8的内容! YOLOv8v10专栏订阅链接:YOLOv10 创新改进高效涨点持续改进300多篇永久免费答疑 (订阅的小伙伴&#xf…

php+vue+Laravel+uniapp超市售货管理平台小程序-nodejs-计算机毕业设计

文章目录 具体实现截图本项目支持的技术路线源码获取详细视频演示:文章底部获取博主联系方式!!!!本系统开发思路进度安排及各阶段主要任务java类核心代码部分展示主要参考文献:源码获取/详细视频演示 ##项目…

【web渗透】SSRF漏洞超详细讲解

SSRF漏洞 一、原理简介二、漏洞形成的原因三、SSRF和CSRF的区别四、SSRF的攻击方式五、寻找漏洞的方法六、伪协议的介绍 * 1、ftp:// 协议2、Gopher://协议3、Dict:// 协议 七、绕过姿势八、漏洞修复 * 1、防护措施2、最佳防护 九、本章小结 一、原理简介 SSRF(Server-Side R…

【M365运维】Sharepoint文档库无法编辑页面

【问题】 Sharepoint文档库设计开发人员反馈说,文档库页面左上角的“编辑页面”变灰了,无法使用。 另外,如果使用Sharepoint Designer去打开文档库链接,登录时会出现下面的提示。 【解决】 1、启用 Custom Script, 步骤&#xff1…

Spring Boot 整合 RabbitMQ 实现延迟消息

关于 RabbitMQ 消息队列(Message Queuing,简写为 MQ)最初是为了解决金融行业的特定业务需求而产生的。慢慢的,MQ 被应用到了更多的领域,然而商业 MQ 高昂的价格让很多初创公司望而却步,于是 AMQP&#xff0…

RabbitMQ Java客户端安装与配置指南

RabbitMQ Java客户端安装与配置指南 rabbitmq-java-client RabbitMQ Java client 项目地址: https://gitcode.com/gh_mirrors/ra/rabbitmq-java-client 1. 项目基础介绍 RabbitMQ Java客户端是RabbitMQ消息队列系统的官方Java客户端库。它允许Java应用程序通过AMQP协议…

如何保证RabbitMQ消息的可靠传输?

在这个图中,消息可能丢失的场景是1,2,3 1.在生产者将消息发送给RabbitMQ的时候,消息到底有没有正确的到达服务器呢,RabbitMQ提供了两种解决方案: a. 通过事务机制实现(比较消耗性能&#xff0…

RabbitMQ3.9.13与ErLang24.2版本下载资源:消息队列与编程语言的最佳搭档

RabbitMQ3.9.13与ErLang24.2版本下载资源:消息队列与编程语言的最佳搭档 【下载地址】RabbitMQ3.9.13与ErLang24.2版本下载资源 本项目为开发者提供了RabbitMQ 3.9.13和ErLang 24.2的便捷下载资源,旨在简化开发环境搭建流程。资源文件经过精心整理&#…

RabbitMQ 工作模式使用案例之(发布订阅模式、路由模式、通配符模式)

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:RabbitMQ 📚本系列文章为个人学…

【RabbitMQ】路由模式和通配符模式的具体实现

文章目录 路由模式创建队列和交换机生产者代码创建交换机声明队列绑定交换机和队列发送消息完整代码 消费者代码运行程序启动生产者启动消费者 通配符模式创建队列和交换机生产者代码创建交换机声明队列绑定交换机和队列发送消息完整代码 消费者代码运行程序启动生产者启动消费…

【RabbitMQ】RabbitMQ配置与交换机学习

文章目录 简介安装和部署1. 安装RabbitMQ2.创建virtual-host3. 添加依赖4.修改配置文件 WorkQueues模型1.编写消息发送测试类2.编写消息接收(监听)类3. 实现能者多劳 交换机Fanout交换机1.消息发送2.消息监听 Direct交换机1.消息发送2.消息接收 Topic交换…

详解RabbitMQ工作模式之发布订阅模式

目录 发布订阅模式 概念 概念介绍 特点和优势 应用场景 注意事项 代码案例 引入依赖 常量类 编写生产者代码 编写消费者1代码 运行代码 发布订阅模式 概念 RabbitMQ的发布订阅模式(Publish/Subscribe)是一种消息传递模式,它允许消…

Java操作RabbitMQ

文章目录 Spring集成RabbitMQ1. AMQP&SpringAMQP2. SpringBoot集成RabbitMQ3. 模型work模型 4.交换机Fanout交换机Direct交换机Topic交换机 5.声明式队列和交换机基于API声明基于注解声明 6.消息转换器 Spring集成RabbitMQ 1. AMQP&SpringAMQP AMQP(高级消…

女龙队从佛山九江“扒”向世界 农村大妈划出国际范

临近端午,广东多地的河道里又开始热闹起来,特别是佛山地区的龙舟活动历史悠久。九江镇被誉为全国首个龙舟名镇,赛龙舟的传统已有300年历史。九江是典型的水乡,河网密布,几乎每个村子都有河流经过,划船出行是最便捷的交通方式。在村民眼中,龙舟不仅能聚人气,还能增强村里…

同济大学教授路秉杰逝世 建筑学界痛失“中国塔王”

著名建筑历史学家、建筑教育家路秉杰先生因病医治无效,于2025年5月29日在上海逝世,享年90岁。他生前是中国建筑学会史学分会原副理事长,同济大学建筑与城市规划学院教授及博士生导师。路秉杰出生于1935年,山东聊城人。他在中日两国建筑史、园林史以及中国伊斯兰教建筑等领域…

武汉警界科技精英万松因公牺牲 幕后英雄悄然离去

5月27日0时33分,湖北省武汉市公安局科技信息化支队警务技术四级主任万松因公牺牲,享年50岁。两天后的早晨,武昌殡仪馆告别大厅内庄严肃穆,花圈环绕,哀乐低回。他的遗属、生前亲友及同事百余人含泪忍悲,送别这位警界科技精英。5月26日早上7时30分,青年民警王国栋送完孩子…

UniGUI DBGrid 实现多选

设置unidbgrid属性添加多选框 Options —> dgRowSelect、dgCheckSelect、dgMultiSelect —> True 属性完成后,保存运行,unidbgrid前面就会出现多选框,多选时质检选中前面的多选框或者 shift鼠标左键 将两次点击范围内的数据全选 或是 c…