• PHP数字格式化,每三位逗号分隔数字,可以保留小数


    在报价的时候为了给浏览者更清晰明确的数字,所以需要用到数字格式化,有两种方法,一种自己写函数,另一种当然是系统自带的,其实我更喜欢系统自带的。

    先来系统简单的:

    string number_format ( float number [, int decimals [, string dec_point, string thousands_sep]] ):

    示例代码

    echo number_format('169856420');

    输出结果将为:

    169,856,420

    示例代码

    echo number_format('1000000',2);

    输出结果

    1,000,000.00

    示例代码

    echo number_format('1000000',2,',','.');

    输出结果

    1.000.000,00

    再看写的函数:

    function num_format($num){
    
    	if (!is_numeric($num)) {
    		return false;
    	}
    
    	$num = explode('.', $num); // 把整数和小数分开
    	$rl = $num[1]; // 小数部分的值
    	$j = strlen($num[0]) % 3; // 整数有多少位
    	$sl = substr($num[0], 0, $j); // 前面不满三位的数取出来
    	$sr = substr($num[0], $j); // 后面的满三位的数取出来
    	$i = 0;
    
    	while ($i <= strlen($sr)) {
    		$rvalue = $rvalue . ',' . substr($sr, $i, 3); // 三位三位取出再合并,按逗号隔开
    		$i = $i + 3;
    	}
    
    	$rvalue = $sl . $rvalue;
    	$rvalue = substr($rvalue, 0, strlen($rvalue) - 1); // 去掉最后一个逗号
    	$rvalue = explode(',', $rvalue); // 分解成数组
    
    	if ($rvalue[0] == 0) {
    		array_shift($rvalue); // 如果第一个元素为0,删除第一个元素
    	}
    
    	$rv = $rvalue[0]; // 前面不满三位的数
    	for ($i = 1; $i < count($rvalue); $i++) {
    		$rv = $rv . ',' . $rvalue[$i];
    	}
    
    	if (!empty($rl)) {
    		$rvalue = $rv . '.' . $rl; // 小数不为空,整数和小数合并
    	} else {
    		$rvalue = $rv; // 小数为空,只有整数
    	}
    
    	return $rvalue;
    }
  • 相关阅读:
    封装ANSI,UNICODE,UTF8互相转换类
    关于编码ansi、GB2312、unicode与utf-8的区别
    dojo中引入FusionCharts柱状图报错
    FusionCharts 3D环饼图报错
    FusionCharts 3D环饼图
    FusionCharts 2D环饼图
    error:WINDOWS.H already included错误解释
    正视心中野兽是与孩子共处的救赎之路——Leo鉴书44
    dojo中取查询出来的地市维表数据的id
    FusionCharts封装-单系列图组合
  • 原文地址:https://www.cnblogs.com/52php/p/5665425.html
Copyright © 2020-2023  润新知