文档章节

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

myx75
 myx75
发布于 2016/04/16 22:23
字数 235
阅读 17
收藏 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
176
0
[算法题] 人民币大小写转换(阿拉伯数字和汉字转换)

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

guitar_zp
2014/07/03
0
0
狮子的魂/friso

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

狮子的魂
2013/11/28
0
0
Swift3.0语言教程字符串大小写转化

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

大学霸
2016/11/16
2
0
django 过滤器 、日期格式化参数

django1.4 html页面从数据库中读出DateTimeField字段时,显示的时间格式和数据库中存放的格式不一致,比如数据库字段内容为2012-08-26 16:00:00,但是页面显示的却是Aug. 26, 2012, 4 p.m. 为...

浮云飘飘
2015/12/30
54
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java并发备忘

不安全的“先检查后执行”,代码形式如下: if(条件满足){ //这里容易出现线程安全问题//doSomething}else{//doOther} 读取-修改-写入 原子操作:使用CAS技术,即首先从V中读取...

Funcy1122
今天
0
0
SpringBoot2.0 停机

最近新建了个SpringBoot2.0的项目,因为原来一直使用的是传统的Tomcat部署war包的形式,所以这次SpringBoot内置Tomcat部署jar包的时候遇到了很多问题。其中一个就是因为没有外置的Tomcat容器...

Canaan_
昨天
0
1
Confluence 6 外部参考

一个外部参考的意思是任何站点链接到你 Confluence 的实例。任何时候当 Confluence 的用户单击这个外部链接的时候,Confluence 可以记录这次单击为参考。 在默认的情况下,外部链接的参考链接...

honeymose
昨天
0
0
Android中的设计模式之抽象工厂模式

参考 《设计模式解析》 第十一章 Abstract Factory模式 《设计模式:可复用面向对象软件的基础 》3.1 Abstract Factory 抽象工厂 对象创建型模式 《Android源码设计模式解析与实战》第6章 创...

newtrek
昨天
0
0
Redis | 地理空间(GEO)的一个坑

Redis的地理空间(Geo)是个好东西,轻轻松松的就可以把地图描点的问题处理了, 最近却遇到一个坑...Redis采用的Msater-Slave模式, 运用GEORADIUS在salve读取对应的数据,新增了从节点但是从不返...

云迹
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部