美文网首页
将数值金额转换为中文大写金额

将数值金额转换为中文大写金额

作者: 玛瑙鑫 | 来源:发表于2019-12-25 18:47 被阅读0次
/**

* 将数值金额转换为中文大写金额

*

*

@param $amount float 金额(支持到分)

*

@param $type  int  补整类型,0:到角补整;1:到元补整

*

*

@return mixed 中文大写金额

*/

function convertAmountToCn($num)

{

$c1 = "零壹贰叁肆伍陆柒捌玖";

$c2 = "分角元拾佰仟万拾佰仟亿";

$num = round($num, 2);

$num = $num * 100;

if (strlen($num) > 10) {

return "数据太长,没有这么大的钱吧,检查下";

}

$i = 0;

$c = "";

$chars = preg_split('//', $num, -1,PREG_SPLIT_NO_EMPTY);

while (1) {

$n = $chars[count($chars) - $i - 1];

$p1 = substr($c1, 3 * $n, 3);

$p2 = substr($c2, 3 * $i, 3);

if ($n != '0' || ($n == '0' && ($p2 == '亿' || $p2 == '万' || $p2 == '元'))) {

$c = $p1.$p2.$c;

} else {

$c = $p1.$c;

}

$i = $i + 1;

$num = $num / 10;

$num = (int)$num;

if ($num == 0) {

break;

}

}

$j = 0;

$slen = strlen($c);

while ($j < $slen) {

$m = substr($c, $j, 6);

if ($m == '零元' || $m == '零万' || $m == '零亿' || $m == '零零') {

$left = substr($c, 0, $j);

$right = substr($c, $j + 3);

$c = $left.$right;

$j = $j - 3;

$slen = $slen - 3;

}

$j = $j + 3;

}

if (substr($c, strlen($c) - 3, 3) == '零') {

$c = substr($c, 0, strlen($c) - 3);

}

if (empty($c)) {

return "人民币零元整";

} else {

return '人民币'.$c;

}

}

相关文章

网友评论

      本文标题:将数值金额转换为中文大写金额

      本文链接:https://www.haomeiwen.com/subject/gjfhoctx.html