大哥大姐们请帮忙,数字转换(在线等) ( 积分: 50 )

  • 主题发起人 主题发起人 剑指关7910
  • 开始时间 开始时间

剑指关7910

Unregistered / Unconfirmed
GUEST, unregistred user!
大哥大姐你,小弟不自量力,开发了一个程序,遇到困难的,请各位大侠帮助,万分感激!!问题是:怎么在程序中把数字金额转换为大写金额呀!!比如说:21.7转换为大写后为:贰拾壹元柒角整
 
大哥大姐你,小弟不自量力,开发了一个程序,遇到困难的,请各位大侠帮助,万分感激!!问题是:怎么在程序中把数字金额转换为大写金额呀!!比如说:21.7转换为大写后为:贰拾壹元柒角整
 
财务软件中总少不了大写的金额表示方式,如下为一个简单的小写金额转换为大写的函数,其思路简单(可以说烂吧,居然利用了位置来转换),但是它却几乎可以无限制的转换,只要你能读得出来和写得进去:<br>function Tform1.SmallTOBig(small:real):string;<br>var SmallMonth,BigMonth:string;<br>wei1,qianwei1:string[2];<br>wei,qianwei,dianweizhi,qian:integer;<br>begin<br>{------- 修改参数令值更精确 -------}<br>{小数点后的位数,需要的话也可以改动该值}<br>qianwei:=-2;<br><br>{转换成货币形式,需要的话小数点后加多几个零}<br>Smallmonth:=formatfloat('0.00',small);<br>{---------------------------------}<br><br>dianweizhi :=pos('.',Smallmonth);{小数点的位置}<br><br>{循环小写货币的每一位,从小写的右边位置到左边}<br>for qian:=length(Smallmonth) downto 1 do<br>begin<br>{如果读到的不是小数点就继续} <br>if qian&amp;lt;&amp;gt;dianweizhi then<br>begin<br><br>{位置上的数转换成大写}<br>case strtoint(copy(Smallmonth,qian,1)) of<br><br>1:wei1:='壹'; 2:wei1:='贰';<br>3:wei1:='叁'; 4:wei1:='肆';<br>5:wei1:='伍'; 6:wei1:='陆';<br>7:wei1:='柒'; 8:wei1:='捌';<br>9:wei1:='玖'; 0:wei1:='零';<br>end;<br><br>{判断大写位置,可以继续增大到real类型的最大值,可是谁有那么多钱}<br>case qianwei of<br>-3:qianwei1:='厘';<br>-2:qianwei1:='分';<br>-1:qianwei1:='角';<br>0 :qianwei1:='元';<br>1 :qianwei1:='拾';<br>2 :qianwei1:='佰';<br>3 :qianwei1:='千';<br>4 :qianwei1:='万';<br>5 :qianwei1:='拾';<br>6 :qianwei1:='佰';<br>7 :qianwei1:='千';<br>8 :qianwei1:='亿';<br>9 :qianwei1:='十';<br>10:qianwei1:='佰';<br>11:qianwei1:='千';<br>end;<br><br>inc(qianwei);<br>BigMonth :=wei1+qianwei1+BigMonth;{组合成大写金额}<br>end;<br><br>end;<br><br>SmallTOBig:=BigMonth;<br><br>end;<br><br>程序调用如下“edit1.text:=SmallTOBig(1234567890.1234);”他自动默认小数点后两位
 
以前相关的帖子很多<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=1036970<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=949787<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=192656
 
后退
顶部