请教:如何实现数字货币到英文大写的转换,问了很多次,没人能解???

tingst 2002-11-13 07:23:24
请教:如何实现数字货币到英文大写的转换,问了很多次,没人能解???
...全文
148 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
DelUser 2002-11-14
  • 打赏
  • 举报
回复
把你的信箱给我,我把原码发给你!
tingst 2002-11-14
  • 打赏
  • 举报
回复
up
happyzsl 2002-11-13
  • 打赏
  • 举报
回复
原理跟上面的一样了,改一改应该就行了
tingst 2002-11-13
  • 打赏
  • 举报
回复
能不能给点具体代码,非常感谢
火猴 2002-11-13
  • 打赏
  • 举报
回复
《delphi控键编程》名字大概是这样的,机械工业的,上面有
happyzsl 2002-11-13
  • 打赏
  • 举报
回复
数字到英文的转换,
跟小写金额到大写金额的转换一样的原理

参考一下:




财务软件中总少不了大写的金额表示方式,如下为一个简单的小写金额转换为大写的函数,其思路简单(可以说烂吧,居然利用了位置来转换),但是它却几乎可以无限制的转换,只要你能读得出来和写得进去:
function Tform1.SmallTOBig(small:real):string;
var SmallMonth,BigMonth:string;
wei1,qianwei1:string[2];
wei,qianwei,dianweizhi,qian:integer;
begin
{------- 修改参数令值更精确 -------}
{小数点后的位数,需要的话也可以改动该值}
qianwei:=-2;

{转换成货币形式,需要的话小数点后加多几个零}
Smallmonth:=formatfloat('0.00',small);
{---------------------------------}

dianweizhi :=pos('.',Smallmonth);{小数点的位置}

{循环小写货币的每一位,从小写的右边位置到左边}
for qian:=length(Smallmonth) downto 1 do
begin
{如果读到的不是小数点就继续}
if qian<>dianweizhi then
begin

{位置上的数转换成大写}
case strtoint(copy(Smallmonth,qian,1)) of

1:wei1:='壹'; 2:wei1:='贰';
3:wei1:='叁'; 4:wei1:='肆';
5:wei1:='伍'; 6:wei1:='陆';
7:wei1:='柒'; 8:wei1:='捌';
9:wei1:='玖'; 0:wei1:='零';
end;

{判断大写位置,可以继续增大到real类型的最大值,可是谁有那么多钱}
case qianwei of
-3:qianwei1:='厘';
-2:qianwei1:='分';
-1:qianwei1:='角';
0 :qianwei1:='元';
1 :qianwei1:='拾';
2 :qianwei1:='佰';
3 :qianwei1:='千';
4 :qianwei1:='万';
5 :qianwei1:='拾';
6 :qianwei1:='佰';
7 :qianwei1:='千';
8 :qianwei1:='亿';
9 :qianwei1:='十';
10:qianwei1:='佰';
11:qianwei1:='千';
end;

inc(qianwei);
BigMonth :=wei1+qianwei1+BigMonth;{组合成大写金额}
end;

end;

SmallTOBig:=BigMonth;

end;

程序调用如下“edit1.text:=SmallTOBig(1234567890.1234);”他自动默认小数点后两位

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧