文档章节

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

myx75
 myx75
发布于 2016/04/16 22:23
字数 235
阅读 17
收藏 0
点赞 1
评论 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 ⋅ 0

狮子的魂/friso

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

狮子的魂 ⋅ 2013/11/28 ⋅ 0

Swift3.0语言教程字符串大小写转化

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

大学霸 ⋅ 2016/11/16 ⋅ 0

Django 模板过滤器

过滤器,变量的显示形式的改变 一、形式:小写 {{ name | lower }} 二、串联:先转义文本到HTML,再转换每行到 <p> 标签 {{ mytext|escape|linebreaks }} 三、过滤器的参数 显示前30个字 {{...

北方攻城师 ⋅ 2015/01/11 ⋅ 0

golang实现人民币小写转大写

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

知止software ⋅ 2016/08/21 ⋅ 0

django 过滤器 、日期格式化参数

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

浮云飘飘 ⋅ 2015/12/30 ⋅ 0

django 自带过滤器

一、形式:小写 ★{{ name | lower }} 二、串联:先转义文本到HTML,再转换每行到 <p> 标签 {{ my_text|escape|linebreaks }} 三、过滤器的参数 显示前30个字 ★{{ bio | truncatewords:"30"...

山下狮子 ⋅ 2013/11/30 ⋅ 0

PHP 02 PHP的基础语法

◆输出函数: echo(字符串);//括号可省略不写,输出后无返回值,是什么就输扯什么 print(字符串);//输出后返回一个数值 printf(占位符字符串,填充字符);//输出后返回数字 sprintf(...

Annie可馨 ⋅ 2016/11/04 ⋅ 0

django模版过滤器

{{ name | lower }}小写 {{ my_text|escape|linebreaks }}先转义文本到HTML,再转换每行到 <p> 标签 {{ bio | truncatewords:"30" }}显示前30个字 {{ pub_date | date:"F j, Y" }}日期格式化......

jingshishengxu ⋅ 2012/08/18 ⋅ 0

Java编程那些事儿——计算机软件基本概念与进制的概念

Java编程那些事儿——计算机软件基本概念   Java, Java培训, Java基础, Java学习, Java教程   第一章 计算机基础   本部分主要介绍计算机相关的知识,重点介绍和软件编程相关的基础知识...

超人学院 ⋅ 2016/07/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java NIO之字符集

1 字符集和编解码的概念 首先,解释一下什么是字符集。顾名思义,就是字符的集合。它的初衷是把现实世界的符号映射为计算机可以理解的字节。比如我创造一个字符集,叫做sex字符集,就包含两个...

士别三日 ⋅ 27分钟前 ⋅ 0

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 32分钟前 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 35分钟前 ⋅ 0

Webpack 4 api 了解与使用

webpack 最近升级到了 v4.5+版 01 官方不再支持 node4 以下版本 官方不再支持 node4 以下版本官方不再支持 node4 以下的版本,所以如果你的node版本太低,先开始升级node吧!话说node10 ...

NDweb ⋅ 45分钟前 ⋅ 0

使用nodeJs安装Vue-cli

Vue脚手架就是一个Vue框架开发环境 脚手架的意思是帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要 npm install就可以安装,让我们不需要为了编辑或者一些其...

木筏笔歆 ⋅ 今天 ⋅ 0

【微信小程序开发实战】0x00.开发前准备工作

写在开始 本人资深后端码农一枚,近期项目需求,接触到了微信小程序,将学习过程整理成文分享给小伙伴们,由于是边学边整理难免有表述不对的地方,望大家及时指正,感谢。 本人微信号: dream...

dreamans ⋅ 今天 ⋅ 0

linux redis的安装和php7下安装redis扩展

安装redis服务器 (1)下载安装包: $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz (2)编译程序: $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make $ cd src &&......

concat ⋅ 今天 ⋅ 0

Guava EventBus源码解析

一、EventBus使用场景示例 Guava EventBus是事件发布/订阅框架,采用观察者模式,通过解耦发布者和订阅者简化事件(消息)的传递。这有点像简化版的MQ,除去了Broker,由EventBus托管了订阅&...

SaintTinyBoy ⋅ 今天 ⋅ 0

http怎么做自动跳转https

Apache 版本 如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容: RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME......

Helios51 ⋅ 今天 ⋅ 0

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部