//--------------------------------------
//用法: 将dx.h拷到程序所在目录
//在调用表单首部加上 #include dx.h
//调用方式: Edit1->Text = dx("132456");
//注:不能带小数点,金额扩大一百倍输入
//----------------------------------------
#include <math.h>
#include <stdio.h>
AnsiString dx(AnsiString s)
{
if((s.Length() <= 0) && (s.ToIntDef(0) == 0))
return "币零元零角整";
AnsiString odxc, odxs, oszc, oscc, oscc0;
int oi, oi0, i;
double ormb=StrToFloat(s); //金额小写
if(ormb == 0.00)
return "币零元零角整";
odxc="分角圆拾佰仟万拾佰仟亿拾佰仟万拾佰仟亿";
odxs="零壹贰叁肆伍陆柒捌玖";
oszc=FloatToStr(abs(ormb));
i=AnsiPos('.', s);
oszc.Delete(i, 1); // stuf(oszc, 18, 1, '');
oszc=Trim(oszc);
oscc="";
oi0=0;
for(oi=oszc.Length(); oi>0; oi--)
{
oscc=odxc.SubString(oi0*2+1, 2)+oscc;
oscc=odxs.SubString(StrToInt(oszc.SubString(oi, 1))*2+1, 2)+oscc;
oi0++;
}
oscc0="";
for(oi=1; oi <= oscc.Length(); oi=oi+4)
{
if(oscc.SubString(oi, 2) == "零")
{
if(oscc.SubString(oi+2, 2) == "万")
{
if(oscc0.SubString(oscc0.Length()-3, 4) != "亿零")
{
if(oscc0.SubString(oscc0.Length()-1, 2) == "零")
oscc0=oscc0.SubString(1, oscc0.Length()-2)+"万";
else oscc0=oscc0+"万";
}
continue;
}
if(oscc.SubString(oi+2, 2) == "圆")
{
if(oscc0.SubString(oscc0.Length()-1, 2) == "零")
oscc0=oscc0.SubString(1, oscc0.Length()-2)+"圆";
else oscc0=oscc0+"圆";
continue;
}
if(oscc.SubString(oi+2, 2) == "亿")
{
if(oscc0.SubString(oscc0.Length()-1, 2) == "零")
oscc0=oscc0.SubString(1, oscc0.Length()-2)+"亿";
else oscc0=oscc0+"亿";
continue;
}
if(oscc0.SubString(oscc0.Length()-1, 2) != "零")
oscc0=oscc0+"零";
}
else oscc0=oscc0+oscc.SubString(oi, 4);
}
if((oscc0.SubString(oscc0.Length()-3, 4) == "圆零"))
{
oscc0=oscc0.SubString(1, oscc0.Length()-2)+"整";
return oscc0;
}
if((oscc0.SubString(oscc0.Length()-3, 4) == "角零"))
{
oscc0=oscc0.SubString(1, oscc0.Length()-2)+"整";
return oscc0;
}
if((oscc0.SubString(oscc0.Length()-1, 2) == "零"))
oscc0=oscc0.SubString(1, oscc0.Length()-2)+"圆整";
return oscc0;
}
/
String UpperMoney(double jn)
{
int L, ZL, Z, U, V;
AnsiString F = "壹贰叁肆伍陆柒捌玖";
AnsiString G = "元万亿万拾佰仟分角";
AnsiString AA, B, JNS;
JNS.SetLength(255);
double je;
if(jn <= 0)
return "零";
je=(jn<1?jn*100:jn);
//printf(JNS.c_str(),"&.2f",je) ;
JNS=TrimRight(TrimLeft(JNS));
L = StrLen(JNS.c_str());
L=(jn<1?(jn<0.1?1:2):L);
ZL = L+1;
AA =AnsiString("");
B = AnsiString("");
for(; L>0; )
{
Z = StrToInt(JNS.SubString(ZL-L, 1));
U = int(L/4);
V = L%4;
if(Z>0)
{
U=(V == 0?U+U-1:V+V+(U>0?7:13));
AA = AA+B+F.SubString(Z+Z-1, 2)+G.SubString(U, 2);
B = "";
}
else
{
if(L == 1)
AA=AA+"整";
else
{
if(V == 0)
AA=AA+G.SubString(U*2-1, 2);
else
AA=AA+"";
}
B=(V >= 0?"零":"");
}
L=(L == 4?2:L-1);
}
return AA;
}