您的位置:首页 > 其它

大写金额转换成小写

2007-12-04 19:11 381 查看
Q:如何将大写金额转换成小写?



A:简单点,格式比较严格



private

float
getMoney(
string
strBig)






...
{




string
strExp
=
""
;






string
[] arrBig
=

new

string
[]
...
{
"

"
,
""
,
"

"
,
"
+0
"
,
"

"
,
"
+1
"
,
"

"
,
"
+2
"
,
"

"
,
"
+3
"
,
"

"
,
"
+4
"
,
"

"
,
"
+5
"
,
"

"
,
"
+6
"
,
"

"
,
"
+7
"
,
"

"
,
"
+8
"
,
"

"
,
"
+9
"
,
"

"
,
"
*0.01
"
,
"

"
,
"
*0.1
"
,
"

"
,
"
*1
"
,
"

"
,
"
*10.00
"
,
"

"
,
"
*100.00
"
,
"

"
,
"
*1000.00
"
,
"

"
,
"
*10000.00
"
,
"
亿
"
,
"
*100000000.00
"
}

;




for
(
int
i
=

0
; i
<
strBig.Length; i
++
)






...
{




for
(
int
j
=

0
; j
<
arrBig.Length
-
1
;j
+=
2
)






...
{




if
(arrBig[j]
==
strBig[i].ToString())






...
{



strExp
+=
arrBig[j
+

1
].ToString();




continue
;



}



}



}






object
ret
=
new
DataTable().Compute(strExp,
""
);




return

float
.Parse(ret.ToString());




//
Console.WriteLine(getMoney("玖仟零贰拾壹元陆角肆分"));




//
Console.WriteLine(getMoney("玖仟万亿零贰拾壹元陆角肆分"));



}

伴水兄的这个较狠



public

double
DecodeMoneyCn(
string
AText)





...
{



AText
=
AText.Replace(
"
万万
"
,
"
亿
"
);



AText
=
AText.Replace(
"

"
,
"

"
);



AText
=
AText.Replace(
"

"
,
"

"
);



AText
=
AText.Replace(
"

"
,
"

"
);




double
vResult
=

0
;




double
vNumber
=

0
;
//
当前数字




double
vTemp
=

0
;




int
vDecimal
=

0
;
//
是否出现小数点




foreach
(
char
vChar
in
AText)






...
{




int
i
=

"
零一二三四五六七八九
"
.IndexOf(vChar);




if
(i
<

0
) i
=

"
零幺两三四五六七八九
"
.IndexOf(vChar);




if
(i
<

0
) i
=

"
零壹贰叁肆伍陆柒捌玖
"
.IndexOf(vChar);




if
(i
>

0
)






...
{



vNumber
=
i;




if
(vDecimal
>

0
)






...
{



vResult
+=
vNumber
*
Math.Pow(
10
,
-
vDecimal);



vDecimal
++
;



vNumber
=

0
;



}



}




else






...
{



i
=

"
元十百千万亿
"
.IndexOf(vChar);




if
(i
<

0
) i
=

"
整拾佰仟万亿
"
.IndexOf(vChar);




if
(i
==

5
) i
=

8
;




if
(i
>

0
)






...
{




if
(i
>=

4
)






...
{



vTemp
+=
vNumber;




if
(vTemp
==

0
) vTemp
=

1
;



vResult
+=
vTemp
*
Math.Pow(
10
, i);



vTemp
=

0
;



}




else
vTemp
+=
vNumber
*
Math.Pow(
10
, i);



}




else






...
{



i
=

"
元角分
"
.IndexOf(vChar);




if
(i
>

0
)






...
{



vTemp
+=
vNumber;



vResult
+=
vTemp
*
Math.Pow(
10
,
-
i);



vTemp
=

0
;



}




else

if
(i
==

0
)






...
{



vTemp
+=
vNumber;



vResult
+=
vTemp;



vDecimal
=

1
;



vTemp
=

0
;



}



}



vNumber
=

0
;



}



}




return
vResult
+
vTemp
+
vNumber;



}





private

void
button2_Click(
object
sender, EventArgs e)





...
{






string
[] vTestText
=

...
{




"
十二点五六
"
,




"
一亿零一万零五
"
,




"
四万万
"
,




"
九十八亿七千六百五十四万三千二百一十
"
,




"
五元一角四分
"
,
"
壹佰元整
"
,




"
三千五百万
"
,




"
九块二毛
"
}

;




foreach
(
string
vText
in
vTestText)






...
{



Console.WriteLine(
"
DecodeMoneyCn("{0}")={1}
"
, vText,



DecodeMoneyCn(vText));



}



}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: