在开发中,我们经常遇到要把数字进行两位小数的处理,通常情况下我们使用四舍五入可以满足需求,而且mysql 的金额存储也是会进行自动的四舍五入处理。但是在某些需求中,往往只需要保留两位小数即可。例如:在电商平台中,如果订单有优惠金额,会将优惠金额平摊到每一个商品上,从而在退货时,只退用户实付金额即可,但是,如果采取默认的四舍五入,用户多次退款可能出现退款金额超出的情况,因此,我们只保留两位小数就可以。

先来看,PHP自带的两浮点数方法:

ceil 函数:

将浮点向上舍入为最接近的整数,也就是 数学上称为的进一法。

floor 函数:

将浮点向下舍入为最接近的整数,也就是 数学上称为的去尾法。

我们可以利用这两个方法实现上述的功能:

/**

* @param float $number 数字

* @param int $digits 保留的位数

* @return float|int

*/

function numberCeil($number, $digits = 2)

{

$digits = "1".sprintf("%0" . $digits . "d", 0);;

return ceil($number * $digits) / $digits;

}

echo numberCeil(2.3455, 3);

/**

* @param float $number 数字

* @param int $digits 保留的位数

* @return float|int

*/

function numberFloor($number, $digits = 2)

{

$digits = "1" . sprintf("%0" . $digits . "d", 0);;

return floor($number * $digits) / $digits;

}

echo numberFloor(2.3455, 3);

php 小数末尾进1,PHP处理浮点数进一、去尾(不进行四舍五入) | 剑花烟雨江南...相关推荐

  1. php 小数末尾进1,PHP小数点最后一位加1、减1

    比如我有几个数字(小数点后面的位数不固定): 1.155.055 2.122.196 3.0.9631 我怎么做才能让这些数字的小数点最后一位+1,或者-1?比如+1的话希望得到: 1.155.056 ...

  2. Bailian2765 POJ NOI0113-03 八进制小数【进制】

    问题链接:POJ NOI0113-03 八进制小数. 原题出处:Bailian2765 八进制小数. 总时间限制: 1000ms 内存限制: 65536kB 描述 八进制有限小数均可以用十进制有限小数 ...

  3. ACMNO.2 输入一个华氏温度,要求输出摄氏温度。公式为 c=5(F-32)/9 输出要求有文字说明,取位2小数。 输入 一个华氏温度,浮点数 输出 摄氏温度,浮点两位小数

    题目描述 输入一个华氏温度,要求输出摄氏温度.公式为 c=5(F-32)/9 输出要求有文字说明,取位2小数. 输入 一个华氏温度,浮点数 输出 摄氏温度,浮点两位小数 样例输入 -40 样例输出 c ...

  4. php保留两位小数,四舍五入和有小数就进1(可保留两位小数)

    1.直接就向上进1,保留两位小数 ceil(10.521 * 100)/100; 结果10.53: ceil函数就是取整有小数就进12.四舍五入 echo round(5.211, 2); //5.2 ...

  5. c语言去尾法和进一法的例子,《去尾法与进一法》教学案例与反思

    第1篇:<去尾法与进一法>教学案例与反思 教学内容:教科书第99页,例8.试一试.练一练,练习十九3-6题. 教学目标: 1.进一步理解小数近似数的含义,能根据要求用"四舍五入& ...

  6. c++将浮点数转换为整数类型,要求四舍五入

    描述 将浮点数转换为整数类型,要求四舍五入. 输入描述: 随机输入的浮点数 输出描述: 四舍五入之后的整数 思路: 1.将输入的浮点数d强制转换为整形(此时并不能实现四舍五入的转换) 在c中强制类型转 ...

  7. 进制转换【最全进制转换汇总】(整数_小数_正数_负数)正负数整数小数十进制转任意进制-正负数整数小数任意进制转十进制-正负数低进制转高进制-正负数高进制转低进制

    文章目录: 补充知识点:各进制符号表示及其关系--二进制(B).八进制(O).十进制(D).十六进制(前缀OX,后缀H) 扩展:在线进制转换 第一部分:正数 一:[整数]正数十进制转任意进制:辗转相除 ...

  8. c语言浮点数用16进制表示方法,浮点数用十六进制表示方式附C代码

    浮点数用十六进制表示:我这里遇到的问题是知道数值,但需要把数值发送到上位机里显示波形,但是上位机是以浮点数的存储格式来解析的,但是我的单片机不支持float类型,所以我的需求是把已知的数值看做是浮点数 ...

  9. python中浮点数和小数的区别_Python中的浮点数和小数

    简介 float类型,即浮点数,是Python内置的对象类型;decimal类型,即小数类型,则是Python的标准库之一decimal提供的对象类型,也是内置的.了解decimal类型的最佳资料,就 ...

最新文章

  1. SetRegistryKey函数
  2. 去掉ILDasm的SuppressIldasmAttribute限制
  3. Java中long和Long有什么区别
  4. GraphicsStatsService之1-dump数据的实现
  5. 因子(Number_Of_Factors)
  6. Centos6.9安装部署nginx服务器
  7. 四川巴中中学2021高考成绩查询,巴中市高中排名(2021巴中市中学前十排名)
  8. 多商户商城源码_多商户小程序开发搭建?开达应用多商户入驻商城小程序制作教程...
  9. 旅游业者泄露个人信息可被起诉
  10. 使用 setTimeout 实现 setInterval
  11. 2016值得关注的5大IT趋势
  12. iOS开发字符串倒序,倒序单词字母,不倒序单词位置
  13. TMS570LC43xx SylixOS can 驱动
  14. 推荐一款笔记软件 Notion
  15. HTTP Error 503 错误解决办法
  16. LoRaWAN 帧计数机制及典型问题分析
  17. C语言switch输入月份输出季节,输入年月,输出月份有几天(分别用了if——else和switch)...
  18. 知乎百万热议:互联网已成红海,为什么BAT却不涉足传统制造行业
  19. 《python 机器学习算法-logistics regression》
  20. 树莓派4配置USB启动-解决wlan0不识别问题

热门文章

  1. R语言关系操作符:>、<=、!=、>=、==、
  2. 第五章 RNA-seq分析
  3. class struct
  4. 使用VC++6.0创建MFC对话框程序
  5. MySQL安装查看密码修改密码
  6. linux 内核 时间片,能讲一下在Linux系统中时间片是怎么分配的还有优先级的具体算法是...
  7. tf.io.gfile.glob 遍历文件
  8. pandas KeyError [‘1‘] not found in axis 错误的解决方法
  9. 使用webpack打包后,vscode中vue代码变白色的解决办法
  10. 列表转字符串,再转回来,完全一致