您的位置:首页 > 职场人生

【面试题】小数转换为人民币大写形式,PHP实现。

2016-04-16 00:00 501 查看
前段时间面试,有个编程题目是将小数转换为人民币大写形式,最近用PHP多,就写一段,全当记个日志吧。未完待续。

<?php

$newline = '<br/>';
$RMB = array('', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
$RMBUnit = array('圆', '拾', '百', '千', '万', '拾', '百', '千', '亿',
'拾', '百', '千', '万', '拾', '百', '千');

function randomFloat($min = 0, $max = 1) {
return $min + mt_rand() / mt_getrandmax() * ($max - $min);
}

function change2RMB($input) {
global $newline, $RMB, $RMBUnit;

$inputStr = strval(number_format($input, 2));
$inputStr = str_replace(',', '', $inputStr);

echo $inputStr . $newline;
$inputExplode = explode('.', $inputStr, 2);

$inputIntStr = $inputExplode[0];
$inputIntLen = strlen($inputIntStr);
//     echo $inputIntStr . $newline . $inputIntLen . $newline;
if ($inputIntLen > 16) {
return '你的钱已经超过1亿亿,请赞助作者完善此程序,感谢!';
}

for ($i = 0; $i < $inputIntLen; $i++) {
$j = $inputIntLen - $i - 1;
$number = $RMB[$inputIntStr[$j]];
if ($number == '') {
if ($i != 0 && $i != 4 && $i !=8)
continue;
}

$resultIntStr = $number . $RMBUnit[$i] . $resultIntStr;
}
//     echo $resultIntStr . $newline;

$inputFloatStr = $inputExplode[1];
if ($inputFloatStr[0] != 0) {
$resultFloatStr = $RMB[$inputFloatStr[0]] . '角';
}

if ($inputFloatStr[1] != 0) {
$resultFloatStr .=$RMB[$inputFloatStr[1]] . '分';
}

return $resultIntStr . $resultFloatStr;
}

$input = randomFloat(0, 10000000000000000);
// $input = 3000000000070.913;

$result = change2RMB($input);
echo $input . ' => ' . $result;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PHP 转换 人民币 面试