function TForm1.changeRmb(const strRmb:string):string;
var
txt,strhighlevel:string;
i,n,m,ilen,ipos:Integer; //n记录整数部分长度,m记录分数部分长度
strarray,strlevel:array of string;
p:pchar;
ispoint:boolean;//判断是否有小数点
begin
ispoint:=false;
result:='';
ipos:=0;
m:=0;
txt:=Trim(strRmb);
i:=1;
p:=PChar(txt);
//去除开头的0,以及.
if ((txt[1]='0') and (txt[2]<>'.')) or (txt[1]='.') then
begin
ShowMessage('第1位不能为0或者是.,退出操作');
exit;
end;
//检查字符的合法性
while (i<length(txt))do
begin
if (p^>'9') or ((p^<'0') and (P^<>'.')) then //ord('.')=46
begin
ShowMessage(PChar('第'+inttostr(i)+'位包含非数字字符,将退出操作'));
Exit;
end;
if P^='.' then
if ispoint then
begin
showmessage('太多小数点,将退出!');
exit;
end
else
begin
ipos:=i;
ispoint:=true;
end;
Inc(p);
Inc(i);
end;//while
ilen:=Length(txt);
if ispoint then
begin
n:=ipos-1;
m:=ilen-ipos;
end
else
n:=ilen;
//判断是否超过万,或亿
if m>3 then
begin
ShowMessage('小数点后位数超过3,无法转换!');
Exit;
end;
SetLength(strarray,ilen+8);
SetLength(strlevel,ilen+8); for i:=iLen downto 1 do
begin
if txt[i]<>'.' then
case strtoint(txt[i]) of
1:strarray[i]:='壹';
2:strarray[i]:='贰';
3:strarray[i]:='叁';
4:strarray[i]:='肆';
5:strarray[i]:='伍';
6:strarray[i]:='陆';
7:strarray[i]:='柒';
8:strarray[i]:='捌';
9:strarray[i]:='玖';
0:
begin
strarray[i]:='零';
if i<ilen then //如果低位也为零,低位零不显示
if (strarray[i+1]= '') or (strarray[i+1]= '零') then
begin
//strarray[i+1]:= '';
strarray[i]:= '';
end;
if i=n then strarray[i]:='';
strlevel[i]:='';
end;
end; //case
end;
//先处理 小数点部分 if m>0 then
begin
for i:=m downto 1 do
begin
strlevel[ipos+i]:='';
case i-1 of
0:
if txt[ipos+i]='0' then
strarray[ipos+i]:=''
else
strlevel[ipos+i]:='角';
1:
if txt[ipos+i]='0' then
strarray[ipos+i]:=''
else
strlevel[ipos+i]:='分';
2:
if txt[ipos+i]='0' then
strarray[ipos+i]:=''
else strlevel[ipos+i]:='厘';
end;
Result:=strarray[ipos+i]+strlevel[ipos+i]+result;
end;
end;
if ispoint and (txt[ipos-1]='0') and (n=1) then
Result:=result+'' //如果少于1块时,不要显示元。
else
Result:='元'+result; for i:=n downto 1 do
begin case n-i of
0,4,8,12: strlevel[i]:='';
1,5,9,13: strlevel[i]:='拾';
2,6,10,14: strlevel[i]:='佰';
3,7,11,15: strlevel[i]:='仟';
end; //case
if (txt[i]='0') then strlevel[i]:='';
//要处理零 以及加上万、亿
if n-i=4 then
begin
if strarray[i]='零' then strarray[i]:='';
Result:=strarray[i]+strlevel[i]+'万'+result
end
else if n-i=8 then
begin
if strarray[i]='零' then strarray[i]:='';
Result:=strarray[i]+strlevel[i]+'亿'+result
end //begin
else if n-i=12 then
begin
if strarray[i]='零' then strarray[i]:='';
Result:=strarray[i]+strlevel[i]+'兆'+result
end //begin
else
Result:=strarray[i]+strlevel[i]+result;
end; //for
end;

  

数字转换大写人民币的delphi实现的更多相关文章

  1. 算法--java实现将数字转换成人民币大写(迅雷面试题)

    今天去迅雷面试,是个数字转换成人民币的算法题: public class Rmb { /** * 人民币的基本信息和操作 * * @author soyoungboy * @version 1.0 * ...

  2. js 将数字转换成人民币大写的方法

    //将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', ' ...

  3. java 金额数字转换大写算法

    根据人民币大写金额规范,转换有几点要注意的: 阿拉伯数字中间有"0"时,中文大写金额中间可以只写一个"零"字.如¥1,409.50,应写成人民币壹仟肆佰零玖圆伍 ...

  4. C#小写数字金额转换成大写人民币金额的算法

    C#小写数字金额转换成大写人民币金额的算法 第一种方法: using System.Text.RegularExpressions;//首先引入命名空间 private string DaXie(st ...

  5. ORACLE数字转换人民币大写

    ORACLE 数字转换人民币大写     示例.   数字                    :183066999230.68 人民币大写        :壹仟捌佰参拾亿陆仟陆佰玖拾玖万玖仟贰佰参 ...

  6. C# 数字转换成大写

    /// <summary> /// 数字转大写 /// </summary> /// <param name="Num">数字</para ...

  7. C# 数字转换成汉字大写 数值转换成汉字大写

    1.数字转换成汉字大写 public string NumToChinese(string x) { //数字转换为中文后的数组 //转载请注明来自 http://www.shang11.com st ...

  8. js 将数字转换成中文大写

    //完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五. const toChinesNum = ...

  9. PHP 数字转大写

    <?php header("content-type:text/html;charset=utf-8"); function numToRmb($num){ $rmbNum ...

随机推荐

  1. 面向切面编程AOP,一些通用装饰器

    1.一些装饰器,可以减少重复编写.比较常用的. 用的时候函数上面加上装饰器就可以.这是一些装饰器,加在函数或者方法上,减少了很多重复代码. 除此之外工作中也用一些mixin类大幅减少代码. impor ...

  2. [Localization] R-CNN series for Localization and Detection

    CS231n Winter 2016: Lecture 8 : Localization and Detection CS231n Winter 2017: Lecture 11: Detection ...

  3. 二叉树的遍历--C#程序举例二叉树的遍历

    二叉树的遍历--C#程序举例二叉树的遍历 关于二叉树的介绍笨男孩前面写过一篇博客 二叉树的简单介绍以及二叉树的存储结构 遍历方案 二叉树的遍历分为以下三种: 先序遍历:遍历顺序规则为[根左右] 中序遍 ...

  4. 剖析Elasticsearch集群系列之二:分布式的三个C、translog和Lucene段

    转载:http://www.infoq.com/cn/articles/anatomy-of-an-elasticsearch-cluster-part02 共识——裂脑问题及法定票数的重要性 共识是 ...

  5. Cannot change version of project facet Dynamic Web Module to 3.0 异常问题处理

    如何解决Tomcat服务器在初始化应用的时候的以下异常问题 1,Cannot change version of project facet Dynamic Web Module to 3.0 2,O ...

  6. ORM正向和反向查询

    表结构 from django.db import models # Create your models here.class Publisher(models.Model): id = model ...

  7. QQ音乐flac音乐转MP6格式怎样实现

    很多时候我们所下载的音乐格式都不是MP3格式的,用起来都是有局限性的,因为很多播放器都是支持MP3格式的.很多时候为了方便使用,我们就需要将不同的音乐格式转换为MP3格式的.如flac音乐转MP3的问 ...

  8. C#中字符串转换为计算公式(自定义公式的计算)

    第一种解决方案 第一种也是功能最强大的一种,可以使用Eval函数,像在Java中一样强大,几乎所有的运算符都可以实现,包括四则运算,与或非等. 添加COM引用: private void button ...

  9. ros查看摄像头是否打开正常

    使用rqt_image_view命令,查看摄像头是否正常输出图像

  10. html 常用标签 a form input 标签 等等等

    前端HTML   HTML介绍 Web服务本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) sk ...