php大写数字转换,PHP把数字转成人民币大写的函数分享
做财务的人遇到过这么一个问题,比如13,126.8元,在发票或者其他记账业务中,一般要使用大写进行拼读成“壹万叁仟壹佰贰拾陆元捌角整”。
这不,也贴上我原来在做学车网的一个php函数,供大家参考吧。
/**
* 人民币小写转大写
*
* @param string $number 数值
* @param string $int_unit 币种单位,默认"元",有的需求可能为"圆"
* @param bool $is_round 是否对小数进行四舍五入
* @param bool $is_extra_zero 是否对整数部分以0结尾,小数存在的数字附加0,比如1960.30
* @return string
*/
function rmb_format($money = 0, $int_unit = '元', $is_round = true, $is_extra_zero = false) {
// 将数字切分成两段
$parts = explode ( '.', $money, 2 );
$int = isset ( $parts [0] ) ? strval ( $parts [0] ) : '0';
$dec = isset ( $parts [1] ) ? strval ( $parts [1] ) : '';
// 如果小数点后多于2位,不四舍五入就直接截,否则就处理
$dec_len = strlen ( $dec );
if (isset ( $parts [1] ) && $dec_len > 2) {
$dec = $is_round ? substr ( strrchr ( strval ( round ( floatval ( "0." . $dec ), 2 ) ), '.' ), 1 ) : substr ( $parts [1], 0, 2 );
}
// 当number为0.001时,小数点后的金额为0元
if (empty ( $int ) && empty ( $dec )) {
return '零';
}
// 定义
$chs = array ('0', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' );
$uni = array ('', '拾', '佰', '仟' );
$dec_uni = array ('角', '分' );
$exp = array ('', '万' );
$res = '';
// 整数部分从右向左找
for($i = strlen ( $int ) - 1, $k = 0; $i >= 0; $k ++) {
$str = '';
// 按照中文读写习惯,每4个字为一段进行转化,i一直在减
for($j = 0; $j < 4 && $i >= 0; $j ++, $i --) {
$u = $int {$i} > 0 ? $uni [$j] : ''; // 非0的数字后面添加单位
$str = $chs [$int {$i}] . $u . $str;
}
$str = rtrim ( $str, '0' ); // 去掉末尾的0
$str = preg_replace ( "/0+/", "零", $str ); // 替换多个连续的0
if (! isset ( $exp [$k] )) {
$exp [$k] = $exp [$k - 2] . '亿'; // 构建单位
}
$u2 = $str != '' ? $exp [$k] : '';
$res = $str . $u2 . $res;
}
// 如果小数部分处理完之后是00,需要处理下
$dec = rtrim ( $dec, '0' );
var_dump ( $dec );
// 小数部分从左向右找
if (! empty ( $dec )) {
$res .= $int_unit;
// 是否要在整数部分以0结尾的数字后附加0,有的系统有这要求
if ($is_extra_zero) {
if (substr ( $int, - 1 ) === '0') {
$res .= '零';
}
}
for($i = 0, $cnt = strlen ( $dec ); $i < $cnt; $i ++) {
$u = $dec {$i} > 0 ? $dec_uni [$i] : ''; // 非0的数字后面添加单位
$res .= $chs [$dec {$i}] . $u;
if ($cnt == 1)
$res .= '整';
}
$res = rtrim ( $res, '0' ); // 去掉末尾的0
$res = preg_replace ( "/0+/", "零", $res ); // 替换多个连续的0
} else {
$res .= $int_unit . '整';
}
return $res;
}
使用就很简单了
$yuan=13598.3;
$ret=rmb_format($yuan);
php大写数字转换,PHP把数字转成人民币大写的函数分享相关推荐
- 数字转换成人民币大写格式(带界面)
今天看了算法的公开课,有一个把数字转换成人民币大写的算法. 后面就想着自己写一个界面的,好几天没有写一个完整的程序的. 当然有一些BUG,没有时间优化,后面在慢慢优化. 自己的名言:每天努力一点儿,总 ...
- 把数字金额转换成人民币大写[原创]
最近在用这个博客,感觉博客园不错,以前用的是新浪的,感觉这个更好,所以好多东西现在转到这边来了. 下面是一个数字转人民币大写的类,不啰嗦了,下面是代码: 1 /**/ /// <summ ...
- 数值转换成人民币大写的一个类
网上有许多将数值转换成人民币大写的代码,其中有不少写得很好的.昨天在Csdn上浏览,觉得这个比较简洁,但也有几点小Bug,稍加整理,觉得仍然与财务表达方式有不一致的地方,故先贴上来,请大家看看. pu ...
- 关于数字转换成人民币大写的问题
我们在参与大型项目时,难免会遇到数值转换人民币大写的情况.因为我今天接触了一个这样的转换,但原代码存在BUG,转换经常出现问题.于是我就去网上搜索了相关资源.由于没有找到相对权威的转换代码,网上给出的 ...
- JAVA浮点数转人民币读法_算法--java实现将数字转换成人民币大写(迅雷面试题)...
public classRmb {/*** 人民币的基本信息和操作 * *@authorsoyoungboy *@version1.0*/ private double number; //人民币的数 ...
- oracle数字转换成人民币大写
网上找了好几篇博客,测试或多或少有问题,以下已验证可以使用. create or replace function cux_convert_cny(p_num in number default nu ...
- java金额转换函数_将阿拉伯数字转换成人民币大写形式的JAVA工具类
http://wallimn.iteye.com/admin/blogs/365769 public class MoneyUtil { private final static String[] C ...
- 超实用:数字金额转成人民币大写
public static String arabiaToChinese(String number){if(isBlank(number)){return "零";}if(!is ...
- php 带逗号数字转换,php实现数字格式化,数字每三位加逗号的功能函数169856420=169,856,420...
//php实现数字格式化,数字每三位加逗号的功能函数 //number_format("169856420"); 输出结果将为:169,856,420 public functio ...
最新文章
- STL源码剖析学习七:stack和queue
- leetcode || 50、Pow(x, n)
- 不同服务器之间进行传输
- python STL分解
- mysql下载安装及配置_mysql的下载,安装和配置
- jsp+servlet+mysql实现的图书管理系统源码
- java适合做平台_java不适合做单机web管理平台的2大因素
- Python:PDF文件转图像
- oracle授权怎么收费,Oracle数据库如何授权收费(Database Licensing)
- 举个栗子!Tableau 技巧(194):用参数自定义排序控件
- python抢淘宝的东西-Python实现淘宝秒杀功能
- Java超市会员管理系统
- 智星云平台MatDEM问题集
- 你的微信号安全吗?(附最新技术分享)
- java中的double相乘-------保留精度
- JavaScript复习笔记(三)数组及数组API
- 【论文泛读85】基于上下文的句子相似度
- 常见的SQL注入类型
- 【物联网智能网关-01】通过AD采集获取温湿度
- traceroute命令(unix)/tracert命令(windows)的工作原理
热门文章
- php变量值传递,PHP将值传递到包含文件中的变量
- hnu 暑期实训之A除以B
- caffemodel的大小计算
- 谷歌浏览器打开链接,如何不是覆盖当前页面而自动跳转到新标签页?
- maven Could not resolve dependencies
- IO流 (五) ----- 对象数据的序列化与反序列化
- 创建第一个RMI应用
- 敏捷开发“松结对编程”系列之八:微软 Tech ed2011 自组织团队与松结对编程讲稿(敏捷开发)...
- 项目经理的商务指南系列之三:认识客户(敏捷开发,被动而弱小的客户,理解客户的古怪行为,如何喜欢上客户)...
- bzoj3627: [JLOI2014]路径规划