大写金额转换成小写
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));
}
}
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));
}
}
相关文章推荐
- MSSql 自定义函数实现小写金额转换成大写(最高13位不包括小数点后两位)
- 将小写金额转换为中文大写的SQL函数
- 金额小写转换为大写脚本
- 求小写金额转换成大写金额的函数-js
- 用PHP实现小写金额转换大写金额【精确到分】
- 用PHP实现小写金额转换大写金额的代码(精确到分)
- 将小写金额转换为中文大写的SQL函数
- [转贴]将小写金额转换为英文大写的SQL函数
- 阿拉伯数字小写金额转换成中文大写金额C程序说明
- 将小写金额转换为英文大写的SQL函数
- JavaScript将小写金额转换成大写
- Excel数字小写金额转换汉字大写金额公式的简单设置
- 小写金额转换成中文大写金额--搜藏
- 将小写金额转换成为大写
- 将小写金额转换为中文大写
- [记录]将小写金额转换为大写金额
- 小写金额转换成大写金额
- .NET把小写数字金额转换成大写人民币金额的两种算法
- 小写金额转换为大写金额(vb2010)
- delphi 中小写金额转换为大写