【123456789大写】如何把:会计上的金额:123456789.321转换成中文大写和英文.??_123456789大写
创始人
2024-03-20 06:45:54
0次

【123456789大写】如何把:会计上的金额:123456789.321转换成中文大写和英文.??_123456789大写

话题:123456789大写,兴趣爱好

如何把:会计上的金额:123456789.321转换成中文大写和英文.??
壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖圆叁角贰分壹厘.
和相应的英文写法???????????
只要你努力,总会成功的!
StringUpperMoney(doublejn)
{
intL,ZL,Z,U,V;
AnsiStringF="壹贰叁肆伍陆柒捌玖";
AnsiStringG="元万亿万拾佰仟分角";
AnsiStringAA,B,JNS;
JNS.SetLength(255);
doubleje;
if(jn0;)
{
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);
}
returnAA;
}
服了你了.发了这么多贴子
我跟着你接分好了.你结了贴分数也不会少的.
记得头文件是
#include
staticchar*pszBIG5[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
staticchar*pszUNITS[]={"分","角","拾","佰","仟","万"};
staticchar*pszAdvaUNITS[]={"万","亿"};
//实际字符数组位置
#defineBIG5_POS(n)(n-'0')
//转换10000以内的数字为大写
CStringToBIG5(UINTnValue)
{
ASSERT(nValue=0;i--)
{
chCur=strValue.GetAt(i);
CStringstrTmp=pszBIG5[BIG5_POS(chCur)];
cInteger++;
if(chCur!='0')
{
if(2==cInteger)
{
strTmp+=pszUNITS[2];
}
elseif(3==cInteger)
{
strTmp+=pszUNITS[3];
}
elseif(4==cInteger)
{
strTmp+=pszUNITS[4];
}
}
strRet=strTmp+strRet;
}
//
intnPos=0;
intnPriorPos=0;
boolbStartup=false;
nPos=strRet.Find(pszBIG5[0],0);
do
{
//strRet.TrimRight(pszBIG5[0]);
//strRet.TrimLeft(pszBIG5[0]);
if(strRet.Right(2)==pszBIG5[0])
{
strRet.Delete(strRet.GetLength()-2,2);
}
nPriorPos=strRet.Find(pszBIG5[0],nPos+2);
if(-1==nPriorPos)
{
break;
}
if(2==(nPriorPos-nPos))
{
strRet.Delete(nPos,2);
}
}while((nPos=strRet.Find(pszBIG5[0]),nPos+2)!=-1);
if(strRet.Left(2)==pszBIG5[0])
{
strRet.Delete(0,2);
}
returnstrRet;
}
/*
*将阿拉伯数字转换为大写方式
*/
CStringDoubleToBIG5(doubledValue)
{
CStringstrRet;
CStringstrTemp,strFloat,strInteger;
BOOLbFloat=TRUE;
strTemp.Format("%.2f",dValue);
intnLen=strTemp.GetLength();
inti=strTemp.Find('.');
intcInteger=0;
charchCur,chPrior;
//转换小数点为大写
chCur=strTemp.GetAt(i+1);
chPrior=strTemp.GetAt(i+2);
if('0'==chCur)
{
strFloat=pszBIG5[0];
if(chPrior>'0')
{
strFloat+=pszBIG5[BIG5_POS(chPrior)];
strFloat+=pszUNITS[0];
}
else
{
strFloat="";
bFloat=FALSE;
}
}
else
{
strFloat=pszBIG5[BIG5_POS(chCur)];
strFloat+=pszUNITS[1];
if(chPrior>'0')
{
strFloat+=pszBIG5[BIG5_POS(chPrior)];
strFloat+=pszUNITS[0];
}
}
//转换整数部分为大写
strInteger="";
strTemp.Format("%u",(UINT)dValue);
intcRealLen=nLen-3;
intcSegments=(cRealLen)/4;
if((cRealLen%4)>0)
{
cSegments++;
}
for(i=1;i4)
{
strTemp.Delete(strTemp.GetLength()-4,4);
}
if(i>=2)
{
strInteger=ToBIG5(atol((LPCSTR)strSwap))+pszAdvaUNITS[i-2]+strInteger;
}
else
{
strInteger=ToBIG5(atol((LPCSTR)strSwap))+strInteger;
}
}
if(""==strFloat)
{
if(""==strInteger)
{
strRet=pszBIG5[0];
strRet+="圆整";
}
else
{
strRet=strInteger+"圆整";
}
}
else
{
strRet=strInteger+"圆"+strFloat;
}
/*
if(strRet!=""&&strRet!=pszBIG5[0])
{
if(strRet.Left(2)==pszBIG5[0])
{
strRet.Delete(0,2);
}
}
//*/
strRet="人民币"+strRet;
returnstrRet;
}
我以前写的一个!!!!
现在的人可真懒呀!!
实话说,不是我写的:
#include
voidmain()
{
doublex,y;
char*ch[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
char*ch1[]={"拾","佰","仟","万","拾","佰","仟","亿"};
charnum[256];
longi,n,j,m,y1;
printf("input:");
scanf("%lf",&x);
n=(long)x;/*得整数部分*/
y=x-n;/*得小数部分*/
for(i=0;n!=0;i++)
{
num[i]=(char)(n%10);
n/=10;
}
m=i;
num[i]='.';
for(y=y*10;(long)((y-(long)y)*10);)/*如果小数位还是有数(非0)循环继续*/
y*=10;/*小数转化为整数如0.11111转为11111.00...*/
y1=(long)y;
for(i=m+1;y1!=0;i++)
{num[i]=(char)(y1%10);
y1=y1/10;}/*取各位上的数字*/
for(n=0;;n++)
{
if(num[n]=='.')
{
for(j=n-1;j>=0;j--)/*判断是否是万位,亿位..如是再判断是否是0如是就不输出零.*/
{
if(m=2)
{printf("%s",ch1[m-2]);/*输出拾佰仟..如有2位就输出拾*/
m=m--;}
}
printf("点");
break;
}
}
for(i=i-1;num[i]!='.';i--)
printf("%s",ch[(int)num[i]]);/*输出小数部分*/
}

我也懒
最简单的方法:
char*c1[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
char*c2[]={"亿","仟","佰","拾","万","仟","佰","拾","圆","角","分","厘"};
charc[100],china[100];
doubled=123456789.321;
sprintf(c,"%.3f",d);
inti,j,k,len=strlen(c);
//find'.'
for(j=0;j9)//>亿
return;
j=9-j;
break;
}
}
china[0]='\0';
for(i=0,k=0;iif(c[i]=='.')
k++;
strcat(china,c1[c[k++]-0x30]);
strcat(china,c2[i+j]);
}
//china="壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖圆叁角贰分壹厘".
meCAD(狂学C++中,宣告彻底失恋)跟的真紧啊。
可惜没有英文转换。

分享:有长相没对象 > 【123456789大写】如何把:会计上的金额:123456789.321转换成中文大写和英文.??

相关内容

热门资讯

微科电源取得基于供电前馈与电子... 国家知识产权局信息显示,深圳市微科电源系统有限公司取得一项名为“一种基于供电前馈与电子阻尼的开关驱动...
股市必读:华虹宏力新发布《华虹... 截至2026年9月11日收盘,华虹宏力(688347)报收于219.07元,下跌2.25%,换手率3...
扬州鼎锋旗下基金完成备案,投资... 近日,扬州鼎锋引领股权投资合伙企业(有限合伙)完成中国证券投资基金业协会备案,正式进入投资运作阶段。...
深夜,全线跳水!AI芯片,重大... 芯片股集体杀跌! 北京时间13日晚间,芯片股在暗盘交易中集体大跳水,SK海力士跌超4%,英特尔跌近4...
股市必读:深南电路新发布《北京... 截至2026年9月11日收盘,深南电路(002916)报收于396.68元,上涨1.11%,换手率1...
股市必读:中瓷电子(00303... 截至2026年9月11日收盘,中瓷电子(003031)报收于118.06元,下跌1.71%,换手率2...
Anthropic对人工智能的... 9月13日,市场观察人士指出,人工智能高管们呼吁放缓技术发展的言论,短期内可能会对芯片制造商及供应链...
并入光洋股份版图:PCB利基龙... 恰逢近期光洋股份(002708.SZ)完成对常熟东南相互电子有限公司100%股权收购的工商变更登记,...
两大PCB牛股澄清:传闻不实 9月13日晚,两只PCB(印制电路板)大牛股金安国纪、超声电子发布股票交易异常波动公告称,未向英伟达...
《星星说》下周引言(9.14—... 作者:王祯的幻世界 下周引言: 上周我们说要注意情感关系的稳定性,放下猜忌,打开心扉好好沟通,尽量...