分享学习心得,记录学习笔记
文章:44   访问:119695
今天是:
2020年02月23日 星期日
  >   文章列表   >   文章详情

小数中指定位数进舍

PHP中的两个函数 ceil() 和 floor() 方法仅能保存整数位,在这个基础上做了下扩展实现了可以指定小数位数的ceil和floor。
ceil_for_decimal()
floor_for_decimal()

1. 舍去指定位数后面的小数

  1. /**
  2. * 舍去指定位数后面的小数
  3. * @param float $float 需要操作的小数
  4. * @param integer $num 保留的小数位数
  5. */
  6. function floor_for_decimal($float, $num = 0)
  7. {
  8. $float = (float)$float;
  9. // 转为字符串
  10. $str_float = (string)$float;
  11. // 获取小数点位置
  12. $index_dot = strpos($str_float,'.');
  13. // 没有小数则返回
  14. if ($index_dot == false) return $float;
  15. if (strlen(explode('.',$str_float)[1]) <= $num) return $float;
  16. // float小数点右移动num位
  17. $new_float = $float * pow(10,$num);
  18. // 取整
  19. $floor = floor($new_float);
  20. // 小数点左移num位
  21. return $floor / pow(10,$num);
  22. }

2. 舍去指定位数后面的小数

  1. /**
  2. * 指定位数后面的小数进一舍去
  3. * @param float $float 需要操作的小数
  4. * @param integer $num 保留的小数位数
  5. */
  6. function ceil_for_decimal($float, $num = 0)
  7. {
  8. $float = (float)$float;
  9. // 转为字符串
  10. $str_float = (string)$float;
  11. // 获取小数点位置
  12. $index_dot = strpos($str_float,'.');
  13. // 没有小数则返回
  14. if ($index_dot == false) return $float;
  15. if (strlen(explode('.',$str_float)[1]) <= $num) return $float;
  16. // float小数点右移动num位
  17. $new_float = $float * pow(10,$num);
  18. // 取整
  19. $floor = ceil($new_float);
  20. // 小数点左移num位
  21. return $floor / pow(10,$num);
  22. }

友情链接 doywb

2018-2019 Copyright© 米灵尔 小熊 豫ICP备15007436号-1

豫公网安备 41152302000146号