{*------------------------------------------------
金额大小写转换函数
@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 金额大小写转换函数的更多相关文章

  1. Oracle 大小写转换函数

    Oracle 大小写转换函数 转大写UPPER 转小写LOWER 测试: select UPPER('Test') as u from dual; select LOWER('Test') as l ...

  2. 【Python-2.7】大小写转换函数

    字母大小写是编程过程中经常遇到的问题,如下函数可以灵活的进行大小写转换: title():把单词首字母转换为大写: upper():把每个字母转换为大写: lower():把每个字母转换为小写. 示例 ...

  3. .NET下金额大小写转换

    说明:金额转换可以转换50位的数值,单位从分到级.对于中间部分是否显示零,可以根据修改TranslateJInen()函数修改.中间数值为零的去掉不显示 public string GetChCapi ...

  4. double四舍五入,商品金额大小写转换,设置货币的小数位数跟格式输出,进制转化

      1:计算double值四舍五入的方法 对小数数值进行四舍五入,首先应该确认保留小数位, 如果数值的小数精度大于保留小数位,那么开始四舍五入计算.四舍五入的方法非常简单,在所有要丢失精度的小数位中加 ...

  5. python大小写转换函数

    1.全部转换成大写:upper() 用法: str = 'marsggbo'     print str.upper() 结果:MARSGGBO 2.全部转换成小写:lower() 用法:str = ...

  6. php大小写转换函数

    1.将字符串转换成小写   strtolower(): 该函数将传入的字符串参数所有的字符都转换成小写,并以小定形式放回这个字 符串.例: <?php $str = "I want T ...

  7. strtolower() strtoupper()等字符串大小写转换函数

    $str = "Mary Had A Little Lamb and She LOVED It So"; string strtolower ( string $str )— 将字 ...

  8. php中常用的字符串大小写转换函数实例解释

    PHP字符串处理函数中,最为简单的几个函数,相关解释就不上了,直接看例子. PHP字符串处理函数中,最为简单的几个函数,相关解释就不上了,直接看例子. strtolower函数.strtoupper函 ...

  9. jQuery字母大小写转换函数

    toLowerCase() ------ 将字符串中的所有字符都转换成小写: toUpperCase() ------ 将字符串中的所有字符都转换成大写:

随机推荐

  1. Verilog中的UDP

    概述 Verilog HDL语言提供了一种扩展基元的方法,允许用户自己定义元件(User Defined Primitives,UDP).通过UDP,可以把一块组合逻辑电路或者时序逻辑电路封装在一个U ...

  2. npm run dev报错,events.js:160 throw er; // Unhandled 'error' event

    错误代码如下: vue-project@1.0.0 dev E:MySoftwaretestGitwebpackvue-projectnode build/dev-server.js "80 ...

  3. OBS第三方推流直播教程

    第三方推流使用场景 1.当使用YY客户端进行直播遇到问题,暂无解决方法的时候,可以使用第三方直播软件OBS进行推流. 2.对OBS情有独钟的主播. OBS简介: OBS是一款比较好用的开源直播软件,目 ...

  4. java中绘图-----那个鼠标等的监听我还是不太会,,好苦恼啊。不知道这些监听事件是怎么区分的

    总结::监听到底该怎么用 事件的区分是靠判断还是 package com.a.b; //我想实现,当我点击一个按钮时,这个frame里可以画出实心的矩形 import java.awt.Color; ...

  5. java求1+1/2+1/3+1/4+......+1/n的值

    总结:与上一篇的不同是在main函数里.所以n的值是需要填写的.而不是未知值还是运用不灵活. package com.c2; //1+1/2+1/3+....+1/n的值 public class D ...

  6. java代码,输入n多个数,求其平均值,虽有重复,但是第二次,我就乱写了

    总结:对象调用方法,与在main 里直接输出没什么大的区别,少用方法, 乱搞++++ package com.c2; import java.util.Scanner; public class DD ...

  7. 配置VMware中的Ubuntu能够被其他机器ssh远程

    配置虚拟机Ubuntu能够被其他机器 ssh远程 将虚拟机Ubuntu改成桥接模式 在Ubuntu中安装openssh sudo apt install openssh-server -y sudo ...

  8. java成神之——enum枚举操作

    枚举 声明 枚举遍历 枚举在switch中使用 枚举比较 枚举静态构造方法 使用类来模拟枚举 枚举中定义抽象方法 枚举实现接口 单例模式 使用静态代码快 EnumSet EnumMap 结语 枚举 声 ...

  9. .gitignore non-valiate

    Git忽略规则及.gitignore规则不生效的解决办法 分享到:更多19 2015-02-12    分类:Share2人评论65,215 次人浏览 在git中如果想忽略掉某个文件,不让这个文件提交 ...

  10. WEB前端必备掌握知识

    1.跨域: 跨域问题是由于javascript语言安全限制中的同源策略造成的.