我在fastreport中写了数字转化为大写金额的处理,如果有30个人感兴趣,我将公布源代码

xiaoyu 2002-10-24 01:37:09
目前转换到十万位,不过到亿也容易
//hehe
感兴趣在下面签名
...全文
237 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyu 2003-02-13
  • 打赏
  • 举报
回复
各位还是不懂
我是在fastreport中使用其提供的函数
实现,
如果在bcb中,那要这么繁
layerr 2003-01-08
  • 打赏
  • 举报
回复
天啦!!!这么简单的问题需要写得这么复杂么?我只用了几行程序就解决了,而且最多可到百亿位。
extern "C" __declspec(dllexport) char* __stdcall dxhb(long double money)
{
AnsiString sz[10]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
AnsiString dw[11]={"佰","拾","亿","仟","佰","拾","万","仟","佰","拾","元"};
AnsiString xx,dx="",num;
int dotpos;
bool zero=false;

if(money<0){dx="金额为负数";return dx.c_str();}
if(money>9E10){dx="金额超出处理范围";return dx.c_str();}
xx=FloatToStr(FloatToCurr(money/100)*100);
dotpos=xx.Pos(".");
if(dotpos==0)dotpos=xx.Length()+1;

for(int i=0;i<dotpos-1;i++){
num=xx.SubString(dotpos-i-1,1);
if(!zero || num!="0" || i%4==0){//如果前面的不是0,或者本位不是0,或处于各段的最低位上
//单位处理
if(num!="0" || i%4==0){ //如果本位不是0或处于每段的最低位时
if((i!=4 || dotpos-1<9) || (i==4 && xx.SubString(dotpos-i-4,4)!="0000")) dx=dw[10-i]+dx; //如果没处于万位上,则写单位;如果处在万位上,但总长度没到“亿”位,则肯定要写万;如果处于万位上,则要看万段的四个数字全部为零,如果全为零,则不写“万”
}
//数字处理
if(i%4==0 && num!="0")dx=sz[StrToInt(num)]+dx; //如果处于最低位而且不为0
else if(i%4!=0)dx=sz[StrToInt(num)]+dx; //否则,当不位于最低位时
}
if(!zero && num=="0")zero=true;
if(num!="0")zero=false;
}
if(xx.Pos(".")!=0){
num=xx.SubString(dotpos+1,1);
dx=dx+sz[StrToInt(num)];
if(num!="0")dx=dx+"角";
if(xx.Length()-dotpos==2){
num=xx.SubString(dotpos+2,1);
if(num!="0")dx=dx+sz[StrToInt(num)]+"分";
}
}else{
dx=dx+"整";
}
return dx.c_str();
}
GaoLun 2002-12-14
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1261/1261573.xml?temp=.6514551

这里 有一个更简单的~
GaoLun 2002-12-14
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1261/1261573.xml?temp=.2644312


这里 有一个更简单的~
GaoLun 2002-12-14
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1261/1261573.xml?temp=.2644312


这里 有一个更简单的~
xiaoyu 2002-11-12
  • 打赏
  • 举报
回复
使用是
显示:r就可以了
有问题
,留短消息
这些“ ”符号不是
xiaoyu 2002-11-12
  • 打赏
  • 举报
回复
谢谢各位
begin

A[0]:='零';

A[1]:='壹';

A[2]:='贰';

A[3]:='叁';

A[4]:='肆';

A[5]:='伍';

A[6]:='陆';

A[7]:='柒';

A[8]:='捌';

A[9]:='玖';

s:= [SUM([DM.paymoney."合计金额"])];
v1:=Str(s*100);

Len:=Length(v1);
r:='';
mo_8:='';
mo_7:='';
mo_6:='';
mo_5:='';
mo_4:='';
mo_3:='';
mo_2:='';
mo_1:='';
mo_12:='';

i:=Len;
c:=Copy(v1,i,1);
mo_1:=A[c]+'分';
if mo_1='零分' then
mo_1:='整';

i:=i-1;
c:=Copy(v1,i,1);
mo_2:=A[c]+'角';
if mo_2='零角' then
mo_2:='零';
i:=i-1;
c:=Copy(v1,i,1);
mo_3:=A[c]+'元';
if mo_3='零元' then
mo_3:='元';

i:=i-1;

if i>0 then
begin
c:=Copy(v1,i,1);
mo_4:=A[c]+'拾';
if mo_4='零拾' then
mo_4:='零';
end

i:=i-1;

if i>0 then
begin
c:=Copy(v1,i,1);
mo_5:=A[c]+'佰';
if mo_5='零佰' then
mo_5:='零';
end ;

i:=i-1;

if i>0 then
begin
c:=Copy(v1,i,1);
mo_6:=A[c]+'仟';
if mo_6='零仟' then
mo_6:='零';
end ;

i:=i-1;

if i>0 then
begin
c:=Copy(v1,i,1);
mo_7:=A[c]+'万';
if mo_7='零万' then
mo_7:='万';
end ;

i:=i-1;

if i>0 then
begin
c:=Copy(v1,i,1);
mo_8:=A[c]+'拾';
if mo_8='零拾' then
mo_8:='零';

end ;

c:=Copy(v1,Len-5,3);
if c='000' then
begin
mo_5:='';
mo_4:='';
end;


c:=Copy(v1,Len-5,2);
if c='00' then
mo_5:='';

c:=Copy(v1,Len-4,2);
if c='00' then
mo_4:='';

mo_3456:=mo_6+mo_5+mo_4+mo_3;
if mo_3456='零元' then
mo_3456:='元';

mo_12:=mo_2+mo_1;
if mo_12='零整' then
mo_12:='整';

r:=mo_8+mo_7+mo_3456+mo_12;
mo_8:='';
mo_7:='';
mo_6:='';
mo_5:='';
mo_4:='';
mo_3:='';
mo_2:='';
mo_1:='';
mo_12:='';
mo_3456:='';
end
niuzhenjun 2002-11-12
  • 打赏
  • 举报
回复
够了,30多了
cyg1dm 2002-11-12
  • 打赏
  • 举报
回复
怎么不公布呀??
phantomlike 2002-11-08
  • 打赏
  • 举报
回复
算我一个
JooJoo 2002-11-06
  • 打赏
  • 举报
回复
也算我一个
Robin 2002-11-06
  • 打赏
  • 举报
回复
不,是30
Robin 2002-11-06
  • 打赏
  • 举报
回复
我是29
sunnyqcy 2002-11-05
  • 打赏
  • 举报
回复
算我一个
勉励前行 2002-11-05
  • 打赏
  • 举报
回复
其实我不感兴趣,但为了让感兴趣的人能看到代码,多出一份力。
也算上一份吧。
xiaoyu 2002-11-05
  • 打赏
  • 举报
回复
非常感谢各位
我将在明天公布源代码
谢谢
如果不出现意外
hehe
ljlln 2002-11-05
  • 打赏
  • 举报
回复
gz
cardinalh 2002-11-05
  • 打赏
  • 举报
回复
好东西要大家分享嘛,何必在意有多少人呢。
期待
danna 2002-11-05
  • 打赏
  • 举报
回复
算我一个
waxidanna@hotmail.com
谢谢!
mynameis007 2002-11-05
  • 打赏
  • 举报
回复
我是第27个
我只充数.我不要代码?
加载更多回复(22)

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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