最近做一个财务的一个功能,其中有一个地方需要将阿拉伯数字形式的金额显示成大写(老写)的汉字形式,于是有了下面的代码。。。

function num_to_upper($num)

{

$d = array('零','壹','贰','叁','肆','伍','陆','柒','捌','玖');

$e = array('元','拾','佰','仟','万','拾万','佰万','仟万','亿','拾亿','佰亿','仟亿','万亿');

$p = array('分','角');

$zheng='整'; //追加"整"字

$final = array(); //结果

$inwan=0; //是否有万

$inyi=0; //是否有亿

$len_pointdigit=0; //小数点后长度

$y=0;

if($c = strpos($num, '.')) { //有小数点,$c为小数点前有几位数

$len_pointdigit = strlen($num)-strpos($num, '.')-1; // 判断小数点后有几位数

if($c>13) { //简单的错误处理

echo "数额太大,已经超出万亿.";

die();

} elseif($len_pointdigit>2) { //$len_pointdigit小数点后有几位

echo "小数点后只支持2位.";

die();

}

} else { //无小数点

$c = strlen($num);

$zheng = '整';

}

for($i=0;$i

$bit_num = substr($num, $i, 1); //逐字读取 左->右

if($bit_num!=0 || substr($num, $i+1, 1)!=0) //当前是零 下一位还是零的话 就不显示

@$low2chinses = $low2chinses.$d[$bit_num];

if($bit_num || $i==$c-1)

@$low2chinses = $low2chinses.$e[$c-$i-1];

}

for($j=$len_pointdigit; $j>=1; $j--) { //处理小数部分

$point_num = substr($num, strlen($num)-$j, 1); //逐字读取 左->右

if($point_num != 0)

@$low2chinses = $low2chinses.$d[$point_num].$p[$j-1];

// if(substr($num, strlen($num)-2, 1)==0 && substr($num, strlen($num)-1, 1)==0) //小数点后两位都是0

}

$chinses = str_split($low2chinses,2); //字符串转换成数组

//print_r($chinses);

for($x=sizeof($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数组

$final[$y++] = $chinses[$x];

}

$newstring=(array_reverse($final)); //$final为倒数组,$newstring为正常可以使用的数组

$nstring=join($newstring); //数组变成字符串

if(substr($num,-2,1)==0 && substr($num,-1)<>0) { //判断原金额角位为0 ? 分位不为0 ?

$nstring=substr($nstring,0,(strlen($nstring)-4))."零".substr($nstring,-4,4); //这样加一个零字

}

$fen="分";

$fj=substr_count($nstring, $fen); //如果没有查到分这个字

return $nstring=($fj==0)?$nstring.$zheng:$nstring; //就将"整"加到后面

}

相关文章

php数值变成函数,PHP实现金额数字转换成大写函数相关推荐

  1. oracle里存储函数将金额数字转换成大写

    CREATE OR REPLACE FUNCTION NUMBER_TO_CHINESE(P_NUM IN NUMBER DEFAULT NULL)RETURN NVARCHAR2 IS/*Ver:1 ...

  2. 非常经典的JS,数字转换成大写金额函数

    引用内容:     <script   language="javascript">     <!--     //   数字转换成大写金额函数     func ...

  3. php数字转英文,PHP金额数字转换成英文

    PHP金额数字转换成英文 $numTable[40]="FORTY "; $numTable[50]="FIFTY "; $numTable[60]=" ...

  4. android金额大小写转换,Java/android 金额 数字转成大写汉子

    今天翻看自己的代码,发现了自己写的金额数字转成大写的代码,当然我也是在别人的基础上修改的,当时从网上copy了一份代码,发现能用,但是有很多bug,然后自己在别人的基础上修改了一番,满足了自己的应用! ...

  5. C语言-如何将用户输入的金额数字转换成中文大写?

    实战: 如何将用户输入的金额数字转换成中文大写? #include <stdio.h>int main() {// 输入金额转换成大写int money; // 输入数字int money ...

  6. 金额数字转换成中文写法

    import java.math.BigDecimal; /** * <p> * Title: 金额数字转换成中文写法 * </p> * <p> * Descrip ...

  7. 使用 C# 将数字转换成大写人民币

    贴段最近在项目中用到的一个函数. 因涉及到财务,需要把数字符转换成大写人民币汉字,于是自己动手写了一个,使用的算法比较笨,各位看客不要笑啊. 可转换数字大小在10亿以下,超过的,就无能为力了,不过大家 ...

  8. C小程序-将输入的数字转换成大写汉字

    C小程序-将输入的数字转换成大写汉字C int money,count=0;int i=0;int moneys[6];//定义了输入数字的最高位数char unit[10][2]={"零& ...

  9. 小写数字转换成大写数字

    前两天看到一道题,关于小写数字转换成大写的.也就是将"1023050405"这样的数字转换为"十亿二千三百零五万零四百零五". 这个是个算法问题,其它语言也是相 ...

最新文章

  1. mysql 8.0配置主从同步_MySQL8.0.19开启GTID主从同步CentOS8
  2. live555源码分析----RSTPServer创建过程分析
  3. Thymeleaf 模板 springboot集成使用
  4. osg动态加载模型不显示_OSG仿真案例(8)——读取FBX格式文件并显示(无动画)...
  5. 2017.6.28 文艺平衡树 思考记录
  6. android 4g获取mac地址,Android手机获取Mac地址的几种方法
  7. TensorFlow中数据的feed与fetch
  8. python查找文字在图片中的位置_python实现简单图片文字识别翻译OCR
  9. chrome分辨率测试工具
  10. 深度学习涉及到的线性代数知识点总结(一)
  11. 你需要知道的物联网开放平台
  12. 模板方法 (宝,我输液了,输的想你的夜)
  13. 如何入门短视频剪辑?先要有五大思维,有想法才能有如神助
  14. JAVA中的getBytes方法
  15. jenkins 插件_Jenkins通过Ruby插件赢得了新的皇冠
  16. 电脑快捷键横屏变竖屏_电脑屏幕横屏与竖屏之间怎么来回切换?
  17. 有趣问题——赛马游戏
  18. (2.3)【遥控型木马-灰鸽子】原理、使用方法
  19. linux 安装minio并设置开机自启动
  20. 大学计算机基础知识学习计划,大学个人学习计划

热门文章

  1. 2021年信创产业融资分析报告
  2. 并发初体验,解决小规模并发下单问题
  3. 小度霸屏头部综艺,智能音箱迎来国民品牌
  4. PowerDesigner生成数据库时报错Reflexive and mandatory reference
  5. 软工网络15个人阅读作业2(201521123007谭燕)
  6. Quartus-II 13 安装
  7. 本科课程模糊综合评价系统设计与实现
  8. matlab 列维 第一维行维 第二维,基于综合矩阵的城市公交网络模型的公交换乘研究及算法实现...
  9. VLC media player ActiveX控件制作
  10. Java源码学习笔记之lang包——包装类Integer.class