PHP格式化金额,小数位截取而非四舍五入,末尾控制是否0补齐
格式化金额,小数位截取而非四舍五入
<?php
/**
* @name 小数位截取格式化金额 例如 100000.00 -> 100,000.00
* @param float $num [格式化前的金额]
* @param integer $dist [保留的小数位数]
* @param BOOL $zeroComplete [小数位不够dist时,是否用0补齐]
* @return [type] [description]
*/
if (!function_exists("numberFormat")) {
function numberFormat($num = 0, $dist =2, $zeroComplete = TRUE) {
if (!preg_match("/^(-?d+)(.d+)?$/", $num)) {
return $num;
}
if ($dist > 4) {
$dist = 4;
}else if ($dist <= 0) {
$dist = 0;
}
if (!is_bool($zeroComplete)) {
$zeroComplete = TRUE;
}
$newNum = floor($num * pow(10, $dist)) / pow(10, $dist);
if (!$zeroComplete) {
//去掉小数末尾的0
$newNum = floatZeroCut($newNum);
$pos = strpos(strval($newNum), ".");//获取小数点位置
if (!$pos) {
//如果没找到
$dist = 0;
}else {
$dist = strlen(strval($newNum)) - $pos - 1;
}
}
$result = number_format($newNum, $dist);
return $result;
}
}
/**
* 自动去掉小数末尾的0
* @param float $num [小数]
* @return float [返回去掉小数末尾0的小数]
*/
if (!function_exists("floatZeroCut")) {
function floatZeroCut($num = 0.00) {
if (!preg_match("/^(-?d+)(.d+)?$/", $num)) {
return "参数错误";
}
if ((int)($num) == $num) {
return $num;
}
$strNum = strval($num);
if (substr($num, -1) == "0"){
$strNum = substr($strNum, 0, strlen($num) - 1);
return floatZeroCut(floatval($strNum));
}else {
return floatval($strNum);
}
}
}
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: php.ini中开启和关闭 session auto_start 的区别
- 下一篇:没有了
