数字转化为人民币大写(PHP)
<?php
function numTrmb($num)
{
$d = array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖");
$e = array('元', '拾', '佰', '仟', '万', '拾万', '佰万', '仟万', '亿', '拾亿', '佰亿', '仟亿');
$p = array('分', '角');
$zheng = "整";
$final = array();
$inwan = 0;//是否有万
$inyi = 0;//是否有亿
$len = 0;//小数点后的长度
$y = 0;
$num = round($num, 2);//精确到分
if (strlen($num) > 15) {
return "金额太大";
die();
}
if ($c = strpos($num, '.')) {//有小数点,$c为小数点前有几位
$len=strlen($num)-strpos($num,'.')-1;//小数点后有几位数
}else {//无小数点
$c = strlen($num);
$zheng = '整';
}
for ($i = 0; $i < $c; $i++) {
$bit_num = substr($num, $i, 1);
if ($bit_num != 0 || substr($num, $i + 1, 1) != 0) {
@$low = $low . $d[$bit_num];
}
if ($bit_num || $i == $c - 1) {
@$low = $low . $e[$c - $i - 1];
}
}
if($len!=1){
for ($j = $len; $j >= 1; $j--) {
$point_num = substr($num, strlen($num) - $j, 1);
@$low = $low . $d[$point_num] . $p[$j - 1];
}
}else{
$point_num = substr($num, strlen($num) - $len, 1);
$low=$low.$d[$point_num].$p[$len];
}
$chinses = str_split($low, 3);//字符串转化为数组
for ($x = count($chinses) - 1; $x >= 0; $x--) {
if ($inwan == 0 && $chinses[$x] == $e[4]) {//过滤重复的万
$final[$y++] = $chinses[$x];
$inwan = 1;
}
if ($inyi == 0 && $chinses[$x] == $e[8]) {//过滤重复的亿
$final[$y++] = $chinses[$x];
$inyi = 1;
$inwan = 0;
}
if ($chinses[$x] != $e[4] && $chinses[$x] !== $e[8]) {
$final[$y++] = $chinses[$x];
}
}
$newstr = (array_reverse($final));
$nstr = join($newstr);
if ((substr($num, -2, 1) == '0') && (substr($num, -1) <> 0)) {
$nstr = substr($nstr, 0, (strlen($nstr) -6)).'零'. substr($nstr, -6, 6);
}
$nstr=(strpos($nstr,'零角')) ? substr_replace($nstr,"",strpos($nstr,'零角'),6) : $nstr;
return $nstr = (substr($nstr,-3,3)=='元') ? $nstr . $zheng : $nstr;
}
echo numTrmb(556455456156.65);
数字转化为人民币大写(PHP)的更多相关文章
- js 将数字转换成人民币大写的方法
//将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', ' ...
- 算法--java实现将数字转换成人民币大写(迅雷面试题)
今天去迅雷面试,是个数字转换成人民币的算法题: public class Rmb { /** * 人民币的基本信息和操作 * * @author soyoungboy * @version 1.0 * ...
- python中 将数字转化为人民币的形式
def fn(args): """ 将金额转化为人民币模式,带逗号分隔,保留小数点两位,四舍五入 :param args: :return: ""&q ...
- Js将数字转化为中文大写
function number_chinese(str) { var num = parseFloat(str); var strOutput = "", strUnit = '仟 ...
- 工具类_java 数字转化为汉字大写
public class Num2Rmb { private String[] hanArr = { "零", "壹", "贰", &quo ...
- ORACLE数字转换人民币大写
ORACLE 数字转换人民币大写 示例. 数字 :183066999230.68 人民币大写 :壹仟捌佰参拾亿陆仟陆佰玖拾玖万玖仟贰佰参 ...
- C#小写数字金额转换成大写人民币金额的算法
C#小写数字金额转换成大写人民币金额的算法 第一种方法: using System.Text.RegularExpressions;//首先引入命名空间 private string DaXie(st ...
- 数字转人民币大写(SQL SERVER)
--数字转人民币大写NumToRMB ---新建方法create FUNCTION dbo.NumToRMB (@num numeric(14,5)) RETURNS varchar(100) ...
- sql 数字转人民币大写函数(两种方法)
,)) returns @rmb table( 亿 ) ,仟万 ) ,佰万 ) ,拾万 ) ,万 ) ,仟 ) ,佰 ) ,拾 ) ,元 ) ,角 ) ,分 )) as begin insert in ...
随机推荐
- javascript 过滤空格
1: 过滤首尾空格trim.2:过滤左边空格ltrim 3:过滤右边空格 用正则方法写成三个函数. <script type="text/javascript"> ...
- linux服务器wget无法成功解析域名及程序获取外网数据不稳定问题
1.问题描述: 1.1 最近发现通过linux服务器wget下载远程文件经常提示无法解析域名问题,要重复多次才能成功,成功率比较低. 1.2 PHP用file_get_contents()函数获取淘宝 ...
- form 练习
<form>姓:<input type="text" name="firstname" /><br />名:<inpu ...
- SVN - 详细文档
1.首先打开Cornerstone 2.然后如下图所示: 3.选择对应的仓库,如下图所示 4.然后Import完成之后,就把本地的文件提交到SVN服务器上了,如下图所示,另外如果你想要使用SVN进行版 ...
- GridView 设置背景透明以及Item的点击动画
//将点击时的背景色设置为透明 gridView.setSelector(new ColorDrawable(Color.TRANSPARENT)); 此时点击GridView的每个Item就不会出现 ...
- position: absolute;绝对定位水平居中问题
position: absolute;绝对定位水平居中问题 用CSS让元素居中显示并不是件很简单的事情—同样的合法CSS居中设置在不同浏览器中的表现行为却各有千秋.让我们先来看一下CSS中常见的几种让 ...
- DataGrid导出excel
DAL://产品信息导出——LPH public DataTable ExportRelease(string type) { string sql = "SELECT [ProductID ...
- 常用IC封装技术介绍
1.BGA(ball grid array)球形触点陈列,表面贴装型封装之一.在印刷基板的背面按陈列方式制作出球形凸点用 以 代替引脚,在印刷基板的正面装配LSI 芯片,然后用模压树脂或灌封方法进行密 ...
- Colorful Lecture Note(手工栈)
题目1 : Colorful Lecture Note 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi is writing an algorithm ...
- 【HDU1301】Jungle Roads(MST基础题)
爽爆.史上个人最快MST的记录7分40s..一次A. #include <iostream> #include <cstring> #include <cstdlib&g ...