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() ------ 将字符串中的所有字符都转换成大写:
随机推荐
- 使用Log4j将程序日志实时写入Kafka
第一部分 搭建Kafka环境 安装Kafka 下载:http://kafka.apache.org/downloads.html tar zxf kafka-<VERSION>.tgz c ...
- Docker Toolbox on Windows 7
1,下载DockerToolbox,可选daocloud或官网下载 https://get.daocloud.io/toolbox/ 2,配置虚拟机路径环境变量,避免系统C盘,很占空间 MACHINE ...
- TI技术官方论坛
https://e2echina.ti.com/question_answer/dsp_arm/c6000_dsp/f/32/t/172279
- 【转】Jmeter性能测试报告解析
Jmeter报告解析 1.Aggregate Report 解析 Aggregate Report 是 JMeter 常用的一个 Listener,中文被翻译为“聚合报告”.今天再次有同行问到这个报告 ...
- mysql事务之一:MySQL数据库事务隔离级别(Transaction Isolation Level)及锁的实现原理
一.数据库隔离级别 数据库隔离级别有四种,应用<高性能mysql>一书中的说明: 然后说说修改事务隔离级别的方法: 1.全局修改,修改mysql.ini配置文件,在最后加上 1 #可选参数 ...
- NOIP 2008 立体图 (字符串+模拟)
立体图 时间限制: 1 Sec 内存限制: 50 MB提交: 2 解决: 0[提交][状态][讨论版][命题人:外部导入] 题目描述 小渊是个聪明的孩子,他经常会给周围的小朋友们讲些自己认为有趣的 ...
- zufeoj 花生(The Peanuts)
花生(The Peanuts) 时间限制: 1 Sec 内存限制: 128 MB提交: 3 解决: 2[提交][状态][讨论版] 题目描述 鲁宾逊先生和他的宠物猴,多多,非常喜欢花生.有一天,他们 ...
- http响应chunked格式分析
有的时候服务器生成HTTP回应是无法确定信息大小的,这时用Content-Length就无法事先写入长度,而需要实时生成消息长度,这时服务器一般采用Chunked编码. 在进行Chunked编码传输时 ...
- O2耳放 DIY 模拟放大
http://nwavguy.blogspot.com/2011/07/o2-headphone-amp.html 原文链接 O2耳放. O2是一个DIY项目.免费,开源.本篇博客也免费,开源. O2 ...
- Table Tennis Game 2
Description Misha and Vanya have played several table tennis sets. Each set consists of several serv ...