文档章节

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

myx75
 myx75
发布于 2016/04/16 22:23
字数 235
阅读 18
收藏 0

前段时间面试,有个编程题目是将小数转换为人民币大写形式,最近用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;


© 著作权归作者所有

共有 人打赏支持
myx75
粉丝 0
博文 3
码字总数 535
作品 0
南宁
私信 提问
Java学习笔记---字符串操作(人民币大写转换的实现)

向开始学习语言的的同学们推荐下,如果你想学习语言的某个特性,比方说数据库编程,或者网络编程,最好找一个实用的例子,然后不懂的去翻书,去查资料,这样目的性就很强了,个人感觉比对着语...

晨曦之光
2012/05/23
209
0
[算法题] 人民币大小写转换(阿拉伯数字和汉字转换)

在一次面试中遇到一个有意思的小算法题:要求将阿拉伯数字转为汉字显示出来(包含单位)。 当时虽然实现出来,但是代码写的有点凌乱。所以回家后,重新整理了一下。 这个算法有几个小的注意点:...

guitar_zp
2014/07/03
0
0
Swift3.0语言教程字符串大小写转化

Swift3.0语言教程字符串大小写转化 Swift3.0语言教程字符串大小写转化,在字符串中,字符串的格式是很重要的,例如首字母大写,全部大写以及全部小写等。当字符串中字符很多时,通过人为一个...

大学霸
2016/11/16
2
0
golang实现人民币小写转大写

使用golang的正则表达式实现人民币小写转大写,代码如下: 上面代码执行结果如下(可以使用ConvertNumToCny函数输入任何转换金额作为参数): 我们对于大金额的数据经常需要数位数而降低了我...

知止software
2016/08/21
33
0
狮子的魂/friso

关于Friso Friso 是使用 c 语言开发的一款开源的高性能中文分词器,使用流行的mmseg算法实现。完全基于模块化设计和实现,可以很方便的植入其他程序中, 例如:MySQL,PHP,源码无需修改就能...

狮子的魂
2013/11/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

开源软件会被云杀死吗 ?

本文转载云头条,原作者:Michael Stiefel是Reliable Software公司的负责人,是一名软件架构和开发顾问。 文章要点 虽然开源开发不会消失,但商业开源厂商的未来不是很有希望。随着全面管理的...

linuxCool
24分钟前
0
0
OSChina 周三乱弹 —— 谈什么对象?睡什么觉?

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @胖达panda :最肯忘却古人诗,最不屑一顾是相思。分享童丽的单曲《红豆生南国》: 《红豆生南国》- 童丽 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
28分钟前
43
4
stylus

stylus基础教程,stylus实例教程,stylus语法总结

miaojiangmin
今天
3
0
PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
2
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部