C#
static string ConvertToChinese(double x) { string s = x.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A"); string d = Regex.Replace(s, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L/.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[/.]|$))))", "${b}${z}"); return Regex.Replace(d, ".", delegate(Match m) { return "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟万亿兆京垓秭穰"[m.Value[0] - '-'].ToString(); }); } 试试这个方法! 记得加命名空间
C
void main() { float x,y; bool flag = true; char *ch[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; char *ch1[]={"拾","佰","仟","万"}; char num[256]; int i,n,j,m; printf("input:"); scanf("%f",&x); n=(int)x; for(i=0;i<=256&&n!=0;i++) { num[i]=(char)(n%10); n/=10; } m=i; num[i]='.'; y=x-n; for(j=0;j<=256&&y<0;j++) y=y*10; for(i=m+1;i<=256&&y!=0;i++) {num[i]=(char)(y%10); y/=10;} for(n=0;;n++) { if(num[n]=='.') { for(j=n-1;j>=0;j--) {puts(ch[(int)num[j]]) if(m>=2) {puts(ch1[m-2]); m=m--;} } printf("元"); break; } } for(i=i-1;num[i]!='.';i--;) { puts(ch[(int)num[i]]); if (flag) { printf("角") } else printf("分"); flag = false; } }