社区
基础编程
帖子详情
共享一个人民币大小写转换函数(PHP版)
microfire
2003-11-10 01:04:14
程序中难免有不妥之处,敬请各位指正.
...全文
226
12
打赏
收藏
共享一个人民币大小写转换函数(PHP版)
程序中难免有不妥之处,敬请各位指正.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
microfire
2003-11-12
打赏
举报
回复
整数部分精确到14位就有问题了,小数部分的最后一位会有偏差,如12345678901234.99会变成
12345678901234.98了,不知道是不是跟php.ini中的 precision 设置有关,
请各路高手赐教...
AgathaZ
2003-11-11
打赏
举报
回复
good!
xinyaoxp
2003-11-11
打赏
举报
回复
good!
loswing
2003-11-11
打赏
举报
回复
mark .
up!
cn0cn
2003-11-10
打赏
举报
回复
up!~test ok!
microfire
2003-11-10
打赏
举报
回复
烦劳各位在其他平台测试一下,在此先行谢过
tuoshi
2003-11-10
打赏
举报
回复
make & up
microfire
2003-11-10
打赏
举报
回复
感谢 xuzuning(唠叨)
现修改如下:
<?php
function rmb_convert($rmb)
{
if(!empty($rmb)&&is_numeric($rmb)
&&strlen($rmb_tmp=sprintf("%01.2f",$rmb))<=16)
{
$conv_tb=array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"
,"i"=>"亿","w"=>"万","q"=>"仟","b"=>"佰","s"=>"拾"
,"y"=>"元","j"=>"角","f"=>"分","z"=>"整");
list($rmb_zs,$rmb_xs)=explode('.',$rmb_tmp);
$tmp=sprintf("%015s",$rmb_zs.$rmb_xs);
$str_tmp=$tmp[0]."w"
.$tmp[1]."q".$tmp[2]."b".$tmp[3]."s".$tmp[4]."i"
.$tmp[5]."q".$tmp[6]."b".$tmp[7]."s".$tmp[8]."w"
.$tmp[9]."q".$tmp[10]."b".$tmp[11]."s".$tmp[12]."y"
.$tmp[13]."j".$tmp[14]."f";
$rslt_tmp="";
for($str_pos=0;$str_pos<=strlen($str_tmp);$str_pos++)
{
if(is_numeric($str_tmp[$str_pos]))
{
if($str_tmp[$str_pos]!=0)
$rslt_tmp.=$str_tmp[$str_pos].$str_tmp[$str_pos+1];
else
{
if(!empty($rslt_tmp))
{
if(($str_tmp[$str_pos+1]=='i'||$str_tmp[$str_pos+1]=='w'||
$str_tmp[$str_pos+1]=='y')
&&$rslt_tmp[strlen($rslt_tmp)-1]!='i')
$rslt_tmp.=$str_tmp[$str_pos+1];
elseif($str_tmp[$str_pos+2]!=0)
$rslt_tmp.="0";
}
}
}
}
if(!empty($rslt_tmp))
$rslt_tmp.='z';
else
echo "参数错误!";
$rslt="";
for($pos=0;$pos<=strlen($rslt_tmp);$pos++)
{
$rslt.=$conv_tb[$rslt_tmp[$pos]];
}
return $rslt;
}
else
{
echo "参数错误!";
}
}
echo rmb_convert(9999999999999.99);
//玖万玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元玖角玖分整
echo rmb_convert(09999999999999);
//参数错误!
echo rmb_convert(9999999999999);
//玖万玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元整
echo rmb_convert(9999999999999.999);
//参数错误!
echo rmb_convert(0.0049);
//参数错误!
echo rmb_convert(.0051);
//壹分整
echo rmb_convert("70909060807.01");
//柒佰零玖亿零玖佰零陆万零捌佰零柒元零壹分整
echo rmb_convert("70909060-807.01");
//参数错误!
echo rmb_convert(7000000000007.01);
//柒万亿零柒元零壹分整
?>
feyge
2003-11-10
打赏
举报
回复
mark
xuzuning
2003-11-10
打赏
举报
回复
echo rmb_convert("70000000007.01");
//输出 柒佰亿万零柒元零壹分整
应该输出:
柒佰亿零柒元零壹分整
或
柒佰亿柒元零壹分整
microfire
2003-11-10
打赏
举报
回复
希望各位能将对该函数的相关修改告知在下.
microfire
2003-11-10
打赏
举报
回复
<?php
/****************************** 相关说明 ***************************
函数功能: 人民币小写=>大写转换.
测试环境: Win2K svr, Apache 2.0.47, php 4.3.3 .
参 数: 0.01 <= $rmb <= 9999999999999.99,小数点后保留两位有效位,
超过两位按四舍五入计.参数可以是 int,float 或 string 类型.
E-mail : mfsdev@tom.com
*******************************************************************/
function rmb_convert($rmb)
{
if(!empty($rmb)&&is_numeric($rmb)
&&strlen($rmb_tmp=sprintf("%01.2f",$rmb))<=16)
{
$conv_tb=array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"
,"i"=>"亿","w"=>"万","q"=>"仟","b"=>"佰","s"=>"拾"
,"y"=>"元","j"=>"角","f"=>"分","z"=>"整");
list($rmb_zs,$rmb_xs)=explode('.',$rmb_tmp);
$tmp=sprintf("%015s",$rmb_zs.$rmb_xs);
$str_tmp=$tmp[0]."w"
.$tmp[1]."q".$tmp[2]."b".$tmp[3]."s".$tmp[4]."i"
.$tmp[5]."q".$tmp[6]."b".$tmp[7]."s".$tmp[8]."w"
.$tmp[9]."q".$tmp[10]."b".$tmp[11]."s".$tmp[12]."y"
.$tmp[13]."j".$tmp[14]."f";
$rslt_tmp="";
for($str_pos=0;$str_pos<=strlen($str_tmp);$str_pos++)
{
if(is_numeric($str_tmp[$str_pos]))
{
if($str_tmp[$str_pos]!=0)
$rslt_tmp.=$str_tmp[$str_pos].$str_tmp[$str_pos+1];
else
{
if(!empty($rslt_tmp))
{
if($str_tmp[$str_pos+1]=='i'||$str_tmp[$str_pos+1]=='w'||
$str_tmp[$str_pos+1]=='y')
$rslt_tmp.=$str_tmp[$str_pos+1];
elseif($str_tmp[$str_pos+2]!=0)
$rslt_tmp.="0";
}
}
}
}
if(!empty($rslt_tmp))
$rslt_tmp.='z';
else
echo "参数错误!";
$rslt="";
for($pos=0;$pos<=strlen($rslt_tmp);$pos++)
{
$rslt.=$conv_tb[$rslt_tmp[$pos]];
}
return $rslt;
}
else
{
echo "参数错误!";
}
}
echo rmb_convert(9999999999999.99);
//玖万玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元玖角玖分整
echo rmb_convert(09999999999999);
//参数错误!
echo rmb_convert(9999999999999);
//玖万玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元整
echo rmb_convert(9999999999999.999);
//参数错误!
echo rmb_convert(0.0049);
//参数错误!
echo rmb_convert(.0051);
//壹分整
echo rmb_convert("70909060807.01");
//柒佰零玖亿零玖佰零陆万零捌佰零柒元零壹分整
echo rmb_convert("70909060-807.01");
//参数错误!
?>
PHP
7自定义
函数
King老师精心打造的
PHP
7自定义
函数
课程,在
PHP
中提供了强大的系统
函数
来帮我们完成功能,但有时候只用系统
函数
往往还是不够的,还需要根据业务来封装自定义
函数
,本课程讲解了如何自定义
函数
,以及自定义
函数
中常见...
【Python中英文字符串的
大小写转换
】【upper()
函数
、lower()
函数
、capitalize()
函数
、title()
函数
】
【小白从小学Python、C、Java】 【Python-计算机等级考试二级】 Python中英文字符串的
大小写转换
upper()
函数
、lower()
函数
、capitalize()
函数
、title()
函数
选择题 以下python代码输出什么? myString = "Www.LiuJingwei.cn" myString.upper() print(myString) A.None B.Www.LiuJingwei.cn C.WWW.LIUJINGWEI.CN D.www.l
C语言中进制转换与
函数
进制转换: 为什么使用二进制、八进制、十六进制? 由于现在的CPU只能识别高低两种电平,只能使用二进制数据进行计算 二进制虽然能够被计算机直接计算,但是不方便书写、记录,因此将数据以八进制方式为了更方便记录在文件中 随着CPU位数不断增加,八进制不能满足需求,所以发展出了十六进制来表示数据, 由于历史原因八进制还不能退出历史舞台 十进制转二进制:(十进制转其他进制) 求余法: 用2对数据求余,然后再继续对商求余,知道商为0结束,过程中产生的余数就是该数据的二进制(逆序) n %2 余...
如何使用
PHP
中的
函数
在多个地方编写相同的代码会使阅读和理解项目变得困难。编程的“核心原则”或基本原则之一是“不要重复自己”,通常被称为DRY编程。变量可以防止我们反复写入相同的数据。
函数
可以防止我们反复编写相同的操作。
函数
提供了一种强大的方式来编写模块化和可重用的代码。
函数
可以来自标准
PHP
发行
版
,也可以是
PHP
编译的附加扩展。单个开发人员也可以为单个项目编写
函数
,或者在多个项目之间
共享
函数
。当您需要针对多个项目或位置执行操作时,
函数
就是工具。现在您已经有了
一个
理解
函数
的良好基础,看看
PHP
提供的许多内置
函数
。
C# 大端小端转换
关于大端和小端,是
一个
有趣的问题。本文告诉大家如何在C#转换大端和小端。 这里有
一个
有趣的故事,请看详解大端模式和小端模式 - CSDN博客 默认的 C# 使用的是小端,如果收到的消息是大端,那么就会出现解析错误。 例如收到的数据是 byte 数组,现在知道数据是大端数据,需要把大端转小端,首先需要把数据复制出来。 复制数组 假设收到的数据是 data ,里面的前两个 byte 是不需要的,...
基础编程
21,886
社区成员
140,365
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章