delphi 金额大小写转换函数
- {*------------------------------------------------
- 金额大小写转换函数
- @author 王云盼
- @version V1506.01
在delphi7测试OK- -------------------------------------------------}
- unit UnTranRMB; //主要是考虑数字的小数部分,和大写金额的零
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
- function TranRMB(const Value: string): string; /// const 和 var 常量 变量 数字金额转换成大写金额
- function TranNum(M: string):string; /// 大写金额转换成数字金额
- implementation
- {*------------------------------------------------
- 判断是否有小数点, 切给出小数点出现的位置 和小数点的数目
- @param S 字符串
- @param Pos 小数点位置
- @param Number 小数点个数
- @return Boolean
- -------------------------------------------------}
- function IsPoint(S: string; var Pos: Integer; var Number: integer): Boolean;
- var
- I: integer;
- begin
- Result := False;
- Number := 0;
- for I := 1 to length(S) do
- begin
- if S[I] = '.' then
- begin
- Pos := I;
- Number := Number + 1;
- Result := True;
- end;
- end;
- end;
- {*------------------------------------------------
- 检测字符串是否合理,若小数点超过1个或者字符串开头是0
- @param Value
- @return Boolean
- -------------------------------------------------}
- function ChickStr(Value: double): Boolean;
- var
- J, K : Integer;
- begin
- Result := False;
- if Value <= 0 then
- Result := True;
- if IsPoint(floatToStr(Value), J, K) = True then
- if K >= 2 then
- Result := True;
- end;
- {*------------------------------------------------
- 转换小写函数
- @param
- @return
- -------------------------------------------------}
- function TranNum(M: string):string;
- var
- N: Integer;
- S: string;
- begin
- S := '.00';
- if Length(M) = 1 then
- Result := '¥' + M + S
- else Result := '¥' + M ;
- end;
- {*------------------------------------------------
- 数字金额转换成大写金额
- @param
- @return
- -------------------------------------------------}
- function TranRMB(const Value: string): string;
- var
- I, J, K, L, V, Pos, LZPart, LXPart : integer;
- S1: string;
- IsZero: Boolean;
- begin
- if ((Value[1]='0') and (Value[2]<>'.')) or (Value[1]='.') then /// 第一位不能为小数点
- begin
- ShowMessage('不符合要求');
- exit;
- end;
- //if ChickStr(FloatToStr(S1)) = True then exit; /// 判断是否可以转换
- L := length(Value); /// 初始化转换的数字长度
- Result := '人民币'; /// 初始化返回值
- /// 有小数情况
- if IsPoint(Value, Pos, J) = True then
- begin
- LXPart := L - Pos; /// 小数部分长度
- LZPart := L - LXPart - 1; /// 整数部分长度
- if StrToFloat(Value) = 0 then
- begin
- Result :=Result + '零元整';
- exit;
- end;
- for J := 1 to LZPart do /// 当前位置
- begin
- K := StrToInt(Value[J]); /// 当前位置的内容
- V := LZPart - J + 1; /// 当前位置的权
- case K of /// 获取当前位置内容的大写值
- 1: S1 := '壹';
- 2: S1 := '贰';
- 3: S1 := '叁';
- 4: S1 := '肆';
- 5: S1 := '伍';
- 6: S1 := '陆';
- 7: S1 := '柒';
- 8: S1 := '捌';
- 9: S1 := '玖';
- 0: begin /// 有0的情况
- S1 := '零';
- if J < LZPart then /// 如果不是最后一位,则判断低位是否也有0,有0不显示
- begin
- if (Value[J+1] = '') or (Value[J+1] = '0') then
- S1 := '';
- end;
- if J = LZPart then /// 0在最后一位也不显示
- S1 := '';
- end;
- end;
- case V of /// 权的情况
- 1:begin
- if K = 0 then
- begin
- if StrToFloat(Value) < 1 then
- begin
- S1 := '';
- Result := Result + S1;
- end
- else begin
- S1 := '';
- Result := Result + S1 + '元' ;
- end;
- end
- else
- Result := Result + S1 + '元';
- end;
- 2:begin
- if K = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '拾';
- end;
- 3:begin
- if K = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '百' ;
- end;
- 4:begin
- if K = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '仟' ;
- end;
- 5:begin
- if K = 0 then
- begin
- S1 := '';
- Result := Result + S1 + '万' ;
- end
- else
- Result := Result + S1 + '万';
- end;
- 6:begin
- if K = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '拾';
- end;
- 7:begin
- if K = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '百';
- end;
- 8:begin
- if K = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '仟';
- end;
- 9:begin
- if K = 0 then
- begin
- S1 := '';
- Result := Result + S1 + '万' ;
- end
- else
- Result := Result + S1 + '亿';
- end;
- 10:begin
- if K = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '拾';
- end;
- 11:begin
- if K = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '百';
- end;
- 12:begin
- if K = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '仟';
- end;
- 13:begin
- if K = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '万';
- end;
- 14:begin
- if K = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '兆';
- end;
- end;
- end;
- for I := 1 to LXPart do
- begin
- V := StrToInt(Value[I+Pos]) ;
- case V of
- 1: S1 := '壹';
- 2: S1 := '贰';
- 3: S1 := '叁';
- 4: S1 := '肆';
- 5: S1 := '伍';
- 6: S1 := '陆';
- 7: S1 := '柒';
- 8: S1 := '捌';
- 9: S1 := '玖';
- 0: begin
- S1 := '零';
- if I < L then /// 如果不是最后一位
- begin
- if (Value[I+Pos+1] = '') or (Value[I+Pos+1] = '0') then
- begin
- IsZero := True;
- S1 := '';
- end;
- end;
- if I = L then
- S1 := '';
- end;
- end;
- case I of
- 1: begin
- if V = 0 then
- begin
- Result := Result + S1 ;
- end
- else
- Result := Result + S1 + '角';
- end;
- 2: begin
- if V = 0 then
- begin
- Result := Result + S1 ;
- end
- else
- Result := Result + S1 + '分';
- end;
- 3: begin
- if V = 0 then
- begin
- Result := Result + S1 ;
- end
- else
- Result := Result + S1 + '厘';
- end;
- 4: begin
- if V = 0 then
- begin
- Result := Result + S1 ;
- end
- else
- Result := Result + S1 + '毫';
- end;
- end;
- end;
- if S1 = '' then Result := Result + '整';
- end
- /// 不是小数情况
- else begin
- for I := 1 to L do /// 当前位的位置
- begin
- V := StrToInt(Value[I]) ; /// 当前位的内容
- K := L - I + 1; /// 当前位的权
- case V of
- 1: S1 := '壹';
- 2: S1 := '贰';
- 3: S1 := '叁';
- 4: S1 := '肆';
- 5: S1 := '伍';
- 6: S1 := '陆';
- 7: S1 := '柒';
- 8: S1 := '捌';
- 9: S1 := '玖';
- 0: begin
- S1 := '零';
- if I < L then /// 如果不是最后一位
- begin /// 判断下一位是不是0,低位0不显示
- if (Value[i+1] = '') or (Value[i+1] = '0') then
- S1 := '';
- end;
- if I = L then
- S1 := '';
- end;
- end;
- case K of
- 1:begin
- if V = 0 then /// 当有零的情况
- Result := Result + S1 + '元整'
- else
- Result := Result + S1 + '元整';
- end;
- 2:begin
- if V = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '拾';
- end;
- 3:begin
- if V = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '百' ;
- end;
- 4:begin
- if V = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '仟' ;
- end;
- 5:begin
- if V = 0 then
- begin
- S1 := '';
- Result := Result + S1 + '万' ;
- end
- else
- Result := Result + S1 + '万';
- end;
- 6:begin
- if V = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '拾';
- end;
- 7:begin
- if V = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '百';
- end;
- 8:begin
- if V = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '仟';
- end;
- 9:begin
- if V = 0 then
- begin
- S1 := '';
- Result := Result + S1 + '亿' ;
- end
- else
- Result := Result + S1 + '亿';
- end;
- 10:begin
- if V = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '拾';
- end;
- 11:begin
- if V = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '百';
- end;
- 12:begin
- if V = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '仟';
- end;
- 13:begin
- if V = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '万';
- end;
- 14:begin
- if V = 0 then
- Result := Result + S1
- else
- Result := Result + S1 + '兆';
- end;
- end;
- end;
- end;
- end;
- end.
delphi 金额大小写转换函数的更多相关文章
- Oracle 大小写转换函数
Oracle 大小写转换函数 转大写UPPER 转小写LOWER 测试: select UPPER('Test') as u from dual; select LOWER('Test') as l ...
- 【Python-2.7】大小写转换函数
字母大小写是编程过程中经常遇到的问题,如下函数可以灵活的进行大小写转换: title():把单词首字母转换为大写: upper():把每个字母转换为大写: lower():把每个字母转换为小写. 示例 ...
- .NET下金额大小写转换
说明:金额转换可以转换50位的数值,单位从分到级.对于中间部分是否显示零,可以根据修改TranslateJInen()函数修改.中间数值为零的去掉不显示 public string GetChCapi ...
- double四舍五入,商品金额大小写转换,设置货币的小数位数跟格式输出,进制转化
1:计算double值四舍五入的方法 对小数数值进行四舍五入,首先应该确认保留小数位, 如果数值的小数精度大于保留小数位,那么开始四舍五入计算.四舍五入的方法非常简单,在所有要丢失精度的小数位中加 ...
- python大小写转换函数
1.全部转换成大写:upper() 用法: str = 'marsggbo' print str.upper() 结果:MARSGGBO 2.全部转换成小写:lower() 用法:str = ...
- php大小写转换函数
1.将字符串转换成小写 strtolower(): 该函数将传入的字符串参数所有的字符都转换成小写,并以小定形式放回这个字 符串.例: <?php $str = "I want T ...
- strtolower() strtoupper()等字符串大小写转换函数
$str = "Mary Had A Little Lamb and She LOVED It So"; string strtolower ( string $str )— 将字 ...
- php中常用的字符串大小写转换函数实例解释
PHP字符串处理函数中,最为简单的几个函数,相关解释就不上了,直接看例子. PHP字符串处理函数中,最为简单的几个函数,相关解释就不上了,直接看例子. strtolower函数.strtoupper函 ...
- jQuery字母大小写转换函数
toLowerCase() ------ 将字符串中的所有字符都转换成小写: toUpperCase() ------ 将字符串中的所有字符都转换成大写:
随机推荐
- LVS+Keepalived搭建
LVS+Keepalived搭建 原理说明 (推荐): http://www.cnblogs.com/likehua/archive/2014/06/19/3796849.html http://ou ...
- 关于OPC自动化接口编程(OPCDAAuto.dll)几点注意问题
为了能够在工作中方便的应用OPC和充分的理解OPC的开发流程.内部机制,这两天正在研究开发OPC客户端程序,一般我们开发OPC客户端程序有以下几种方式: (1) 使用OPCNetAPI,需 ...
- CRC码计算
循环冗余校验检错方案 上节介绍的奇偶校验码(PCC)只能校验一位错误,本节所要介绍的循环冗余校验码(CRC)的检错能力更强,可以检出多位错误. 1. CRC校验原理 CRC校验原理看起来比较复杂,好难 ...
- jmeter 打不开 提示“Not able to find Java executable or version”的解决办法
Not able to find Java executable or version. Please check your Java installation . errorlevel=2Not a ...
- 让memcached分布式
memcached是应用最广的开源cache产品,它本身不提供分布式的解决方案,我猜想一方面它想尽量保持产品简单高效,另一方面cache的key-value的特性使得让memcached分布式起来比较 ...
- profile MySQL性能分析工具
分析SQL执行带来的开销是优化SQL的重要手段.在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析.该参数可以在全局和session级别来设置.对于全局级别则作用于整个MySQL ...
- mysql replication /mysql 主从复制原理
一下内容均是根据leader的培训分享整理而成 ************************************我是分割线*********************************** ...
- 【原创】深入理解Docker容器和镜像 -- 分析了docker的命令含义
10张图带你深入理解Docker容器和镜像 镜像(Image)就是一堆只读层(read-only layer)的统一视角 要点:容器 = 镜像 + 读写层.并且容器的定义并没有提及是否要运行容器. 一 ...
- Perl参考函数/教程
这是标准的Perl解释器所支持的所有重要函数/功能的列表.在一个函数中找到它的详细信息. 功能丰富的 Perl:轻松调试 Perl Perl脚本的调试方法 perl 入门教程 abs - 绝对值函数 ...
- 1060 Are They Equal
题意: 给出两个浮点数(最大不超过10^100),以及存储的有效位数,判断这两个数是否相等.如12300和12358.9若存储的有效位数为3,则均表示为0.123*10^5,因此视为相等. 思路:[字 ...