May
21
支持到 万亿,精确到角分。
<?php
$_NUMS = array('零','壹','贰','叁','肆','伍','陆','柒','捌','玖');
function four_num($num)
{
global $_NUMS;
$unit = array("", "拾", "佰", "仟");
$str = '';
$i = 0;
if ($num == 0)
return '零';
$arr_str = array();
while ($num > 0) {
$x = $num % 10;
if ($x == 0)
$arr_str[] = $_NUMS[0];
else
$arr_str[] = $_NUMS[$x] . $unit[$i];
$num = floor($num / 10);
$i++;
}
$arr_str = array_reverse($arr_str);
$str = join("", $arr_str);
$str = preg_replace('/(零)+/', '零', $str);
$str = preg_replace('/零$/', '', $str);
return $str;
}
function rmb($amount)
{
//去除开头的空格、正负号、前导0、小数点、符号
$amount = preg_replace('/(^\s*(\+|-)?0*)|\.|¥/', '', $amount);
if ($amount == '')
return '零元整';
if (strlen($amount) == 1) $amount = '0' . $amount;
$int_part = substr($amount, 0, '-2');
$float_part = substr($amount, -2);
$jiao = intval($float_part{0});
$fen = intval($float_part{1});
$unit = array('', '万', '亿', '万');
while (strlen($int_part) % 4 != 0) $int_part = '0' . $int_part;
$groups = str_split($int_part, 4);
$groups = array_reverse($groups);
//print_r($groups);
$arr_str = array();
for ($i = 0; $i < count($groups); $i++) {
$arr_str[] = four_num($groups[$i]) . $unit[$i];
if ($groups[$i] < 1000)
$arr_str[] = '零';
}
$arr_str = array_reverse($arr_str);
//print_r($arr_str);
$ret = join('', $arr_str);
$ret = preg_replace('/^(零)+/', '', $ret);
$ret = preg_replace('/(零)+/', '零', $ret);
$ret = preg_replace('/零万/', '', $ret);
$ret = preg_replace('/零亿/', '亿', $ret);
$ret = preg_replace('/(零)$/', '', $ret);
if ($ret !== '') $ret .= '元';
if ($float_part == 0) {
$ret .= '整';
}
else {
global $_NUMS;
if ($ret !== '' && ($groups[0] % 10 == 0 || $jiao == 0)) {
$ret .= '零';
}
if ($jiao != 0) $ret .= $_NUMS[$jiao] . '角';
if ($fen != 0) $ret .= $_NUMS[$fen] . '分';
}
return $ret;
}
//TEST CASE
case_test("壹仟肆佰零玖元伍角", rmb('1409.50'));
case_test("陆仟零柒元壹角肆分", rmb('6007.14'));
case_test("壹仟陆佰捌拾元零叁角贰分", rmb('1680.32'));
case_test("壹拾万柒仟元零伍角叁分", rmb('107000.53'));
case_test("壹万陆仟肆佰零玖元零贰分", rmb('16409.02'));
case_test("叁佰贰拾伍元零肆分", rmb('325.04'));
case_test("壹亿壹仟元零叁角", rmb('10000100030'));
function case_test($stdans, $ans)
{
if ($stdans == $ans)
echo "TEST OK\n";
else
echo "$stdans <==> $ans\n";
}
?>
$_NUMS = array('零','壹','贰','叁','肆','伍','陆','柒','捌','玖');
function four_num($num)
{
global $_NUMS;
$unit = array("", "拾", "佰", "仟");
$str = '';
$i = 0;
if ($num == 0)
return '零';
$arr_str = array();
while ($num > 0) {
$x = $num % 10;
if ($x == 0)
$arr_str[] = $_NUMS[0];
else
$arr_str[] = $_NUMS[$x] . $unit[$i];
$num = floor($num / 10);
$i++;
}
$arr_str = array_reverse($arr_str);
$str = join("", $arr_str);
$str = preg_replace('/(零)+/', '零', $str);
$str = preg_replace('/零$/', '', $str);
return $str;
}
function rmb($amount)
{
//去除开头的空格、正负号、前导0、小数点、符号
$amount = preg_replace('/(^\s*(\+|-)?0*)|\.|¥/', '', $amount);
if ($amount == '')
return '零元整';
if (strlen($amount) == 1) $amount = '0' . $amount;
$int_part = substr($amount, 0, '-2');
$float_part = substr($amount, -2);
$jiao = intval($float_part{0});
$fen = intval($float_part{1});
$unit = array('', '万', '亿', '万');
while (strlen($int_part) % 4 != 0) $int_part = '0' . $int_part;
$groups = str_split($int_part, 4);
$groups = array_reverse($groups);
//print_r($groups);
$arr_str = array();
for ($i = 0; $i < count($groups); $i++) {
$arr_str[] = four_num($groups[$i]) . $unit[$i];
if ($groups[$i] < 1000)
$arr_str[] = '零';
}
$arr_str = array_reverse($arr_str);
//print_r($arr_str);
$ret = join('', $arr_str);
$ret = preg_replace('/^(零)+/', '', $ret);
$ret = preg_replace('/(零)+/', '零', $ret);
$ret = preg_replace('/零万/', '', $ret);
$ret = preg_replace('/零亿/', '亿', $ret);
$ret = preg_replace('/(零)$/', '', $ret);
if ($ret !== '') $ret .= '元';
if ($float_part == 0) {
$ret .= '整';
}
else {
global $_NUMS;
if ($ret !== '' && ($groups[0] % 10 == 0 || $jiao == 0)) {
$ret .= '零';
}
if ($jiao != 0) $ret .= $_NUMS[$jiao] . '角';
if ($fen != 0) $ret .= $_NUMS[$fen] . '分';
}
return $ret;
}
//TEST CASE
case_test("壹仟肆佰零玖元伍角", rmb('1409.50'));
case_test("陆仟零柒元壹角肆分", rmb('6007.14'));
case_test("壹仟陆佰捌拾元零叁角贰分", rmb('1680.32'));
case_test("壹拾万柒仟元零伍角叁分", rmb('107000.53'));
case_test("壹万陆仟肆佰零玖元零贰分", rmb('16409.02'));
case_test("叁佰贰拾伍元零肆分", rmb('325.04'));
case_test("壹亿壹仟元零叁角", rmb('10000100030'));
function case_test($stdans, $ans)
{
if ($stdans == $ans)
echo "TEST OK\n";
else
echo "$stdans <==> $ans\n";
}
?>
Dec
16
1. 选题
那个鸟系统实在做的很烂,勉强用用吧。
(1) 如果没有保研,或者没有跟着的老师,或者跟着的老师没有在做的项目,那么看到哪个题目有兴趣了就选上,然后跟给题的老师联系,一般来说都没问题;
(2) 如果上述条件不成立,选自己老师出的题;
(3) 如果自己老师没在上面出题,可以让他找王恒还是谁加个题目,把你填上去就行了。
(4) 最后一种情况,如果你跟某老师比较熟的话,想做什么让他去王恒那里加个也OK。
2. 毕设最重要的是什么?
不是内容,是格式。cs.whu.edu.cn/thesis首页“相关下载”里面有范文和格式,在写的时候一定要特别注意;尤其是每年可能会有些细节变动,一定要及时了解。最后交论文的时候需要交纸质版(而且是要比较贵的那种封面,一张两三块钱,封死,切割整齐),如果格式不合适的话,要重新打一遍,很贵也很麻烦。争取一次过。
3. 毕设内容怎么办?
随便忽悠,最后答辩的时候很松。
4. 答辩的情况
(1) 希望申请优秀毕业论文需要提前申报,而且会提前答辩
(2) 新大楼三四五层的某些间会作为答辩的地点。参加答辩的同学随机分组,每十来个同学分到某一个房间,每个房间两三个老师
(3) 需要准备PPT,貌似是8~10分钟吧,然后老师会问你几个可有可无的问题,大概应付一下就过了。
5. 附上我去年的相关文档
p.s. 我的论文格式是一次通过的。
6. 祝各位顺利毕业
那个鸟系统实在做的很烂,勉强用用吧。
(1) 如果没有保研,或者没有跟着的老师,或者跟着的老师没有在做的项目,那么看到哪个题目有兴趣了就选上,然后跟给题的老师联系,一般来说都没问题;
(2) 如果上述条件不成立,选自己老师出的题;
(3) 如果自己老师没在上面出题,可以让他找王恒还是谁加个题目,把你填上去就行了。
(4) 最后一种情况,如果你跟某老师比较熟的话,想做什么让他去王恒那里加个也OK。
2. 毕设最重要的是什么?
不是内容,是格式。cs.whu.edu.cn/thesis首页“相关下载”里面有范文和格式,在写的时候一定要特别注意;尤其是每年可能会有些细节变动,一定要及时了解。最后交论文的时候需要交纸质版(而且是要比较贵的那种封面,一张两三块钱,封死,切割整齐),如果格式不合适的话,要重新打一遍,很贵也很麻烦。争取一次过。
3. 毕设内容怎么办?
随便忽悠,最后答辩的时候很松。
4. 答辩的情况
(1) 希望申请优秀毕业论文需要提前申报,而且会提前答辩
(2) 新大楼三四五层的某些间会作为答辩的地点。参加答辩的同学随机分组,每十来个同学分到某一个房间,每个房间两三个老师
(3) 需要准备PPT,貌似是8~10分钟吧,然后老师会问你几个可有可无的问题,大概应付一下就过了。
5. 附上我去年的相关文档
p.s. 我的论文格式是一次通过的。
下载文件 (已下载 2719 次)
6. 祝各位顺利毕业