数字转换大写人民币的delphi实现
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实现的更多相关文章
- 算法--java实现将数字转换成人民币大写(迅雷面试题)
今天去迅雷面试,是个数字转换成人民币的算法题: public class Rmb { /** * 人民币的基本信息和操作 * * @author soyoungboy * @version 1.0 * ...
- js 将数字转换成人民币大写的方法
//将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', ' ...
- java 金额数字转换大写算法
根据人民币大写金额规范,转换有几点要注意的: 阿拉伯数字中间有"0"时,中文大写金额中间可以只写一个"零"字.如¥1,409.50,应写成人民币壹仟肆佰零玖圆伍 ...
- C#小写数字金额转换成大写人民币金额的算法
C#小写数字金额转换成大写人民币金额的算法 第一种方法: using System.Text.RegularExpressions;//首先引入命名空间 private string DaXie(st ...
- ORACLE数字转换人民币大写
ORACLE 数字转换人民币大写 示例. 数字 :183066999230.68 人民币大写 :壹仟捌佰参拾亿陆仟陆佰玖拾玖万玖仟贰佰参 ...
- C# 数字转换成大写
/// <summary> /// 数字转大写 /// </summary> /// <param name="Num">数字</para ...
- C# 数字转换成汉字大写 数值转换成汉字大写
1.数字转换成汉字大写 public string NumToChinese(string x) { //数字转换为中文后的数组 //转载请注明来自 http://www.shang11.com st ...
- js 将数字转换成中文大写
//完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五. const toChinesNum = ...
- PHP 数字转大写
<?php header("content-type:text/html;charset=utf-8"); function numToRmb($num){ $rmbNum ...
随机推荐
- 面向切面编程AOP,一些通用装饰器
1.一些装饰器,可以减少重复编写.比较常用的. 用的时候函数上面加上装饰器就可以.这是一些装饰器,加在函数或者方法上,减少了很多重复代码. 除此之外工作中也用一些mixin类大幅减少代码. impor ...
- [Localization] R-CNN series for Localization and Detection
CS231n Winter 2016: Lecture 8 : Localization and Detection CS231n Winter 2017: Lecture 11: Detection ...
- 二叉树的遍历--C#程序举例二叉树的遍历
二叉树的遍历--C#程序举例二叉树的遍历 关于二叉树的介绍笨男孩前面写过一篇博客 二叉树的简单介绍以及二叉树的存储结构 遍历方案 二叉树的遍历分为以下三种: 先序遍历:遍历顺序规则为[根左右] 中序遍 ...
- 剖析Elasticsearch集群系列之二:分布式的三个C、translog和Lucene段
转载:http://www.infoq.com/cn/articles/anatomy-of-an-elasticsearch-cluster-part02 共识——裂脑问题及法定票数的重要性 共识是 ...
- 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 ...
- ORM正向和反向查询
表结构 from django.db import models # Create your models here.class Publisher(models.Model): id = model ...
- QQ音乐flac音乐转MP6格式怎样实现
很多时候我们所下载的音乐格式都不是MP3格式的,用起来都是有局限性的,因为很多播放器都是支持MP3格式的.很多时候为了方便使用,我们就需要将不同的音乐格式转换为MP3格式的.如flac音乐转MP3的问 ...
- C#中字符串转换为计算公式(自定义公式的计算)
第一种解决方案 第一种也是功能最强大的一种,可以使用Eval函数,像在Java中一样强大,几乎所有的运算符都可以实现,包括四则运算,与或非等. 添加COM引用: private void button ...
- ros查看摄像头是否打开正常
使用rqt_image_view命令,查看摄像头是否正常输出图像
- html 常用标签 a form input 标签 等等等
前端HTML HTML介绍 Web服务本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) sk ...