PHP 把人民币小写金额转换成人民币大写金额

    public function numTrmb($num){
    	$d = array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖");
    	$e = array('元', '拾', '佰', '仟', '万', '拾万', '佰万', '仟万', '亿', '拾亿', '佰亿', '仟亿');
    	$p = array('分', '角');
    	$zheng = "整";
    	$final = array();
    	$inwan = 0;//是否有万
    	$inyi = 0;//是否有亿
    	$len = 0;//小数点后的长度
    	$y = 0;
    	$num = round($num, 2);//精确到分
    	if(strlen($num) > 15){
    		return "金额太大";
    		die();
    	}
    	if($c = strpos($num, '.')){//有小数点,$c为小数点前有几位
    		$len=strlen($num)-strpos($num,'.')-1;//小数点后有几位数
    	}else{//无小数点
    		$c = strlen($num);
    		$zheng = '整';
    	}
    	for($i = 0; $i < $c; $i++){
    		$bit_num = substr($num, $i, 1);
    		if ($bit_num != 0 || substr($num, $i + 1, 1) != 0) {
    			@$low = $low . $d[$bit_num];
    		}
    		if ($bit_num || $i == $c - 1) {
    			@$low = $low . $e[$c - $i - 1];
    		}
    	}
    	if($len!=1){
    		for ($j = $len; $j >= 1; $j--) {
    			$point_num = substr($num, strlen($num) - $j, 1);
    			@$low = $low . $d[$point_num] . $p[$j - 1];
    		}
    	}else{
    		$point_num = substr($num, strlen($num) - $len, 1);
    		$low=$low.$d[$point_num].$p[$len];
    	}
    	$chinses = str_split($low, 3);//字符串转化为数组
    	for ($x = count($chinses) - 1; $x >= 0; $x--) {
    		if ($inwan == 0 && $chinses[$x] == $e[4]) {//过滤重复的万
    			$final[$y++] = $chinses[$x];
    			$inwan = 1;
    		}
    		if ($inyi == 0 && $chinses[$x] == $e[8]) {//过滤重复的亿
    			$final[$y++] = $chinses[$x];
    			$inyi = 1;
    			$inwan = 0;
    		}
    		if ($chinses[$x] != $e[4] && $chinses[$x] !== $e[8]) {
    			$final[$y++] = $chinses[$x];
    		}
    	}
    	$newstr = (array_reverse($final));
    	$nstr = join($newstr);
    	if((substr($num, -2, 1) == '0') && (substr($num, -1) <> 0)){
    		$nstr = substr($nstr, 0, (strlen($nstr) -6)).'零'. substr($nstr, -6, 6);
    	}
    	$nstr=(strpos($nstr,'零角')) ? substr_replace($nstr,"",strpos($nstr,'零角'),6) : $nstr;
    	return $nstr = (substr($nstr,-3,3)=='元') ? $nstr . $zheng : $nstr;
    }

全部评论
6
点赞 回复 分享
发布于 2023-07-23 20:12 北京

相关推荐

想按时下班的大菠萝在...:隔壁学校的,加油多投, 实在不好找可以下个学期开学找,把算法八股准备好,项目有空再换换
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务