在winform 中 如何将“0123456789”转化成“零壹贰叁肆伍陆柒捌玖拾佰仟”不知哪位高手知道? 前面textbox框 在textchange时触发,判断把大写汉字做枚举 列出 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你google一下就行啦. /// <summary> /// 货币 /// </summary> public class Currency { /// <summary> /// 把double数转换为大写的货币数 /// </summary> /// <param name="pJe"></param> /// <returns></returns> public static string DoubleToRmbZwdx(double pJe) { string[] strArray = new string[] { "分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾" }; string[] strArray2 = new string[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; string str = ""; string str2 = " " + ((pJe < 0.0) ? (0.0 - pJe) : pJe).ToString("f2");//"f2"为4舍5入到两位小数 str2 = str2.Substring(str2.Length - 13); str2 = str2.Substring(0, 10) + str2.Substring(11); bool flag = false; bool flag2 = false; for (int i = 0; i < str2.Length; i++) { string str3 = str2.Substring((str2.Length - i) - 1, 1); if (str3 == " ") { break; } int index = System.Convert.ToInt32(str3) - System.Convert.ToInt32("0"); if (index != 0) { if (flag && !flag2) { str = "零" + str; } str = strArray[i] + str; str = strArray2[index] + str; flag = false; flag2 = false; continue; } switch (i) { case 0: { if (flag && !flag2) { str = "零" + str; } str = "整" + str; flag2 = true; continue; } case 2: { if ((flag || (str3 == "0")) && !flag2) { str = "零" + str; } str = "元" + str; flag2 = true; continue; } case 6: { if ((flag || (str3 == "0")) && !flag2) { str = "零" + str; } str = "万" + str; flag2 = true; continue; } case 10: { if ((flag || (str3 == "0")) && !flag2) { str = "零" + str; } if (flag2) { str = str.Substring(2); } str = "亿" + str; flag2 = true; continue; } } flag = true; } //if (Convert.ToDouble(System.Math.Abs(pJe).ToString("f2")) < 1.0) //{ // str = "零" + str; //} if (pJe < 0.0) { return ("负" + str); } if (pJe == 0.0) { return ""; } return str; } } 以前有人问过这问题了啊!最好的办法是:用Replace方法,具体不记得了.string s=source.Replace("1","壹"); 在这个地方用枚举前台页面<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="Admin_test" %><%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TagPrefix="asp" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"> <title>无标题页</title></head><body> <form id="form1" runat="server"> <div> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /></div> </form></body></html>后台页面using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class Admin_test : System.Web.UI.Page{ enum MyEnum { 零=0,壹=1,贰=2}; protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { MyEnum q = new MyEnum(); MyEnum[] c = (MyEnum[])Enum.GetValues(q.GetType());//这个地方有待改进,大家给点意见 int i = System.Convert.ToInt32(this.TextBox1.Text); this.TextBox2.Text = c[i].ToString(); } } mohugomohu方法 不错~简单明了 string[] s = new string[10]; s[0] = "零"; s[1] = "壹"; s[2] = "贰"; s[3] = "叁"; s[4] = "肆"; s[5] = "伍"; s[6] = "陆"; s[7] = "柒"; s[8] = "捌"; s[9] = "玖"; double m = 65899654.23; string temp = m.ToString("0仟0佰0拾0亿0仟0佰0拾0万0仟0佰0拾0元.0角0分"); for (int i = 0; i < s.Length; i++) { temp = temp.Replace(i.ToString(), s[i]); } temp = temp.Replace(".",""); Response.Write(temp); //result: 零仟零佰零拾零亿陆仟伍佰捌拾玖万玖仟陆佰伍拾肆元贰角叁分 public enum u7u { 零=0, 壹=1, 贰=2, 叁=3, 肆=4, 伍=5, 陆=6, 柒=7, 捌=8, 玖=9, }((u7u)1).ToString() // 例如:(new Money(200)).ToString() == "贰佰元"namespace Skyiv.Util{ using System.Text; class Test { static void Main() { for (;;) { System.Console.Write("金额: "); string s = System.Console.ReadLine(); decimal m; try { m = decimal.Parse(s); } catch { break; } System.Console.WriteLine("大写: " + new Money(m)); } } } // 该类重载的 ToString() 方法返回的是大写金额字符串 class Money { public string Yuan = "元"; // “元”,可以改为“圆”、“卢布”之类 public string Jiao = "角"; // “角”,可以改为“拾” public string Fen = "分"; // “分”,可以改为“美分”之类 static string Digit = "零壹贰叁肆伍陆柒捌玖"; // 大写数字 bool isAllZero = true; // 片段内是否全零 bool isPreZero = true; // 低一位数字是否是零 bool Overflow = false; // 溢出标志 long money100; // 金额*100,即以“分”为单位的金额 long value; // money100的绝对值 StringBuilder sb = new StringBuilder(); // 大写金额字符串,逆序 // 只读属性: "零元" public string ZeroString { get { return Digit[0] + Yuan; } } // 构造函数 public Money(decimal money) { try { money100 = (long)(money * 100m); } catch { Overflow = true; } if (money100 == long.MinValue) Overflow = true; } // 重载 ToString() 方法,返回大写金额字符串 public override string ToString() { if (Overflow) return "金额超出范围"; if (money100 == 0) return ZeroString; string [] Unit = { Yuan, "万", "亿", "万", "亿亿" }; value = System.Math.Abs(money100); ParseSection(true); for (int i = 0; i < Unit.Length && value > 0; i++) { if (isPreZero && !isAllZero) sb.Append(Digit[0]); if (i == 4 && sb.ToString().EndsWith(Unit[2])) sb.Remove(sb.Length - Unit[2].Length, Unit[2].Length); sb.Append(Unit[i]); ParseSection(false); if ((i % 2) == 1 && isAllZero) sb.Remove(sb.Length - Unit[i].Length, Unit[i].Length); } if (money100 < 0) sb.Append("负"); return Reverse(); } // 解析“片段”: “角分(2位)”或“万以内的一段(4位)” void ParseSection(bool isJiaoFen) { string [] Unit = isJiaoFen ? new string [] { Fen, Jiao } : new string [] { "", "拾", "佰", "仟" }; isAllZero = true; for (int i = 0; i < Unit.Length && value > 0; i++) { int d = (int)(value % 10); if (d != 0) { if (isPreZero && !isAllZero) sb.Append(Digit[0]); sb.AppendFormat("{0}{1}", Unit[i], Digit[d]); isAllZero = false; } isPreZero = (d == 0); value /= 10; } } // 反转字符串 string Reverse() { StringBuilder sbReversed = new StringBuilder(); for (int i = sb.Length - 1; i >= 0; i--) sbReversed.Append(sb[i]); return sbReversed.ToString(); } }} 不过这个转大写金额的问题经常有人问起,很经典的个问题,如果微软官方库加上这个就好了,最好是 IFormatProvider 接口形式的。还有转农历,也加上。 在xxoo2007基础上完善了下:private string DoubleToRmb(Double number) { string[] s = new string[10]; s[0] = "零"; s[1] = "壹"; s[2] = "贰"; s[3] = "叁"; s[4] = "肆"; s[5] = "伍"; s[6] = "陆"; s[7] = "柒"; s[8] = "捌"; s[9] = "玖"; double m = 65899654.23; m = number; string temp = m.ToString("0仟0佰0拾0亿0仟0佰0拾0万0仟0佰0拾0元.0角0分"); for (int i = 0; i < s.Length; i++) { temp = temp.Replace(i.ToString(), s[i]); } temp = temp.Replace(".", ""); //去除多余的前导字符 while (true) { int i = temp.IndexOf("零"); if (i == 0) temp = temp.Substring(2, temp.Length - 2); else break; } return temp; } //result:陆仟伍佰捌拾玖万玖仟陆佰伍拾肆元贰角叁分 楼上的有缺陷,还是wuyi8808完善,虽然复杂了些 10^0 一10^1 十10^2 百10^3 千10^4 万10^5 十万10^6 百万10^7 千万10^8 亿10^9 十亿(吉)10^10 百亿10^11 千亿10^12 兆(万亿)10^13 十兆10^14 百兆10^15 千兆(拍)10^16 京10^17 十京10^18 百京(艾)10^19 千京10^20 垓10^21 十垓(泽)10^22 百垓10^23 千垓10^24 秭(尧)10^25 十秭10^26 百秭10^27 千秭10^28 穰10^29 十穰10^30 百穰10^31 千穰10^32 沟10^33 十沟10^34 百沟10^35 千沟10^36 涧10^37 十涧10^38 百涧10^39 千涧10^40 正10^41 十正10^42 百正10^43 千正10^44 载10^45 十载10^46 百载10^47 千载10^48 极10^49 十极10^50 百极10^51 千极10^52 恒河沙10^53 十恒河沙10^54 百恒河沙10^55 千恒河沙10^56 阿僧祇10^57 十阿僧祇10^58 百阿僧祇10^59 千阿僧祇10^60 那由他10^61 十那由他10^62 百那由他10^63 千那由他10^64 不可思议10^65 十不可思议10^66 百不可思议10^67 千不可思议10^68 无量大数10^69 十无量大数10^70 百无量大数10^71 千无量大数10^72 Espana10^73 十Espana10^74 百Espana10^75 千Espana10^76 10^77 10^78 10^79 10^80 10^81 ...... ......10^100 Googol...... ......10^Googol Googolplex================================10^0 一10^-1 分10^-2 厘10^-3 毫10^-4 丝10^-5 忽10^-6 微10^-7 纤10^-8 沙10^-9 尘(纳)10^-10 埃10^-11 渺10^-12 漠(皮)10^-13 模糊10^-14 逡巡10^-15 须臾(飞)10^-16 瞬息10^-17 弹指10^-18 刹那(阿)10^-19 六德10^-20 空虚10^-21 清静(仄)10^-22 阿赖耶10^-23 阿摩罗10^-24 涅槃寂静(攸) 可以用map不?好像c++的楼上那些单位太囧了 我写好了,去这个帖子拷代码用行了,支持我给点分昂!http://topic.csdn.net/u/20080125/09/04c65875-4f50-42cd-bd63-d7b1429e42e1.html 这是测试结果: 0 零元整 20050138000000 贰拾兆零伍佰零壹億叁仟捌佰萬元整 women women 0.425 肆角叁分 20.1 贰拾元壹角 -9.63 负玖元陆角叁分 /// <summary> /// 货币 /// </summary> public class Currency { /// <summary> /// 把double数转换为大写的货币数 /// </summary> /// <param name="pJe"> </param> /// <returns> </returns> public static string DoubleToRmbZwdx(double pJe) { string[] strArray = new string[] { "分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾" }; string[] strArray2 = new string[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; string str = ""; string str2 = " " + ((pJe < 0.0) ? (0.0 - pJe) : pJe).ToString("f2");//"f2"为4舍5入到两位小数 str2 = str2.Substring(str2.Length - 13); str2 = str2.Substring(0, 10) + str2.Substring(11); bool flag = false; bool flag2 = false; for (int i = 0; i < str2.Length; i++) { string str3 = str2.Substring((str2.Length - i) - 1, 1); if (str3 == " ") { break; } int index = System.Convert.ToInt32(str3) - System.Convert.ToInt32("0"); if (index != 0) { if (flag && !flag2) { str = "零" + str; } str = strArray[i] + str; str = strArray2[index] + str; flag = false; flag2 = false; continue; } switch (i) { case 0: { if (flag && !flag2) { str = "零" + str; } str = "整" + str; flag2 = true; continue; } case 2: { if ((flag ¦ ¦ (str3 == "0")) && !flag2) { str = "零" + str; } str = "元" + str; flag2 = true; continue; } case 6: { if ((flag ¦ ¦ (str3 == "0")) && !flag2) { str = "零" + str; } str = "万" + str; flag2 = true; continue; } case 10: { if ((flag ¦ ¦ (str3 == "0")) && !flag2) { str = "零" + str; } if (flag2) { str = str.Substring(2); } str = "亿" + str; flag2 = true; continue; } } flag = true; } //if (Convert.ToDouble(System.Math.Abs(pJe).ToString("f2")) < 1.0) //{ // str = "零" + str; //} if (pJe < 0.0) { return ("负" + str); } if (pJe == 0.0) { return ""; } return str; } } 网站上传问题 路径不对 VS2010调用JAVA webservice不能序列化 代码问题!!! 100分 类似VS项目属性中的控件 ASP.NET 反射dll文件! 使用皮肤控件DotNetSkin,我想让我的某个控件不受该皮肤控件的影响,怎么做? 在C#中,用GetHostAddresses()方法获取到的主机地址有多个,但是有些不是合法的IP,这是怎么回事? 菜鸟请教 我在用FCKeditor时,为什么显示"无法找到网页...."信息.这是为什么. 请问两个.net控件 c#web中的数据集提交? 編寫的程序,如何實現簡體,繁體,English之間先護切換啊
/// 货币
/// </summary>
public class Currency
{
/// <summary>
/// 把double数转换为大写的货币数
/// </summary>
/// <param name="pJe"></param>
/// <returns></returns>
public static string DoubleToRmbZwdx(double pJe)
{
string[] strArray = new string[] { "分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾" };
string[] strArray2 = new string[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
string str = "";
string str2 = " " + ((pJe < 0.0) ? (0.0 - pJe) : pJe).ToString("f2");//"f2"为4舍5入到两位小数
str2 = str2.Substring(str2.Length - 13);
str2 = str2.Substring(0, 10) + str2.Substring(11);
bool flag = false;
bool flag2 = false;
for (int i = 0; i < str2.Length; i++)
{
string str3 = str2.Substring((str2.Length - i) - 1, 1);
if (str3 == " ")
{
break;
}
int index = System.Convert.ToInt32(str3) - System.Convert.ToInt32("0");
if (index != 0)
{
if (flag && !flag2)
{
str = "零" + str;
}
str = strArray[i] + str;
str = strArray2[index] + str;
flag = false;
flag2 = false;
continue;
}
switch (i)
{
case 0:
{
if (flag && !flag2)
{
str = "零" + str;
}
str = "整" + str;
flag2 = true;
continue;
}
case 2:
{
if ((flag || (str3 == "0")) && !flag2)
{
str = "零" + str;
}
str = "元" + str;
flag2 = true;
continue;
}
case 6:
{
if ((flag || (str3 == "0")) && !flag2)
{
str = "零" + str;
}
str = "万" + str;
flag2 = true;
continue;
}
case 10:
{
if ((flag || (str3 == "0")) && !flag2)
{
str = "零" + str;
}
if (flag2)
{
str = str.Substring(2);
}
str = "亿" + str;
flag2 = true;
continue;
}
}
flag = true;
} //if (Convert.ToDouble(System.Math.Abs(pJe).ToString("f2")) < 1.0)
//{
// str = "零" + str;
//} if (pJe < 0.0)
{
return ("负" + str);
}
if (pJe == 0.0)
{
return "";
}
return str;
}
}
string s=source.Replace("1","壹");
前台页面
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="Admin_test" %><%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /></div>
</form>
</body>
</html>后台页面using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class Admin_test : System.Web.UI.Page
{
enum MyEnum { 零=0,壹=1,贰=2};
protected void Page_Load(object sender, EventArgs e)
{ }
protected void Button1_Click(object sender, EventArgs e)
{
MyEnum q = new MyEnum();
MyEnum[] c = (MyEnum[])Enum.GetValues(q.GetType());//这个地方有待改进,大家给点意见
int i = System.Convert.ToInt32(this.TextBox1.Text);
this.TextBox2.Text = c[i].ToString(); }
}
string[] s = new string[10]; s[0] = "零";
s[1] = "壹";
s[2] = "贰";
s[3] = "叁";
s[4] = "肆";
s[5] = "伍";
s[6] = "陆";
s[7] = "柒";
s[8] = "捌";
s[9] = "玖"; double m = 65899654.23; string temp = m.ToString("0仟0佰0拾0亿0仟0佰0拾0万0仟0佰0拾0元.0角0分"); for (int i = 0; i < s.Length; i++)
{
temp = temp.Replace(i.ToString(), s[i]);
} temp = temp.Replace(".","");
Response.Write(temp); //result: 零仟零佰零拾零亿陆仟伍佰捌拾玖万玖仟陆佰伍拾肆元贰角叁分
{
零=0,
壹=1,
贰=2,
叁=3,
肆=4,
伍=5,
陆=6,
柒=7,
捌=8,
玖=9,
}
((u7u)1).ToString()
namespace Skyiv.Util
{
using System.Text;
class Test
{
static void Main()
{
for (;;)
{
System.Console.Write("金额: ");
string s = System.Console.ReadLine();
decimal m;
try { m = decimal.Parse(s); }
catch { break; }
System.Console.WriteLine("大写: " + new Money(m));
}
}
}
// 该类重载的 ToString() 方法返回的是大写金额字符串
class Money
{
public string Yuan = "元"; // “元”,可以改为“圆”、“卢布”之类
public string Jiao = "角"; // “角”,可以改为“拾”
public string Fen = "分"; // “分”,可以改为“美分”之类
static string Digit = "零壹贰叁肆伍陆柒捌玖"; // 大写数字
bool isAllZero = true; // 片段内是否全零
bool isPreZero = true; // 低一位数字是否是零
bool Overflow = false; // 溢出标志
long money100; // 金额*100,即以“分”为单位的金额
long value; // money100的绝对值
StringBuilder sb = new StringBuilder(); // 大写金额字符串,逆序
// 只读属性: "零元"
public string ZeroString
{
get { return Digit[0] + Yuan; }
}
// 构造函数
public Money(decimal money)
{
try { money100 = (long)(money * 100m); }
catch { Overflow = true; }
if (money100 == long.MinValue) Overflow = true;
}
// 重载 ToString() 方法,返回大写金额字符串
public override string ToString()
{
if (Overflow) return "金额超出范围";
if (money100 == 0) return ZeroString;
string [] Unit = { Yuan, "万", "亿", "万", "亿亿" };
value = System.Math.Abs(money100);
ParseSection(true);
for (int i = 0; i < Unit.Length && value > 0; i++)
{
if (isPreZero && !isAllZero) sb.Append(Digit[0]);
if (i == 4 && sb.ToString().EndsWith(Unit[2]))
sb.Remove(sb.Length - Unit[2].Length, Unit[2].Length);
sb.Append(Unit[i]);
ParseSection(false);
if ((i % 2) == 1 && isAllZero)
sb.Remove(sb.Length - Unit[i].Length, Unit[i].Length);
}
if (money100 < 0) sb.Append("负");
return Reverse();
}
// 解析“片段”: “角分(2位)”或“万以内的一段(4位)”
void ParseSection(bool isJiaoFen)
{
string [] Unit = isJiaoFen ?
new string [] { Fen, Jiao } :
new string [] { "", "拾", "佰", "仟" };
isAllZero = true;
for (int i = 0; i < Unit.Length && value > 0; i++)
{
int d = (int)(value % 10);
if (d != 0)
{
if (isPreZero && !isAllZero) sb.Append(Digit[0]);
sb.AppendFormat("{0}{1}", Unit[i], Digit[d]);
isAllZero = false;
}
isPreZero = (d == 0);
value /= 10;
}
}
// 反转字符串
string Reverse()
{
StringBuilder sbReversed = new StringBuilder();
for (int i = sb.Length - 1; i >= 0; i--)
sbReversed.Append(sb[i]);
return sbReversed.ToString();
}
}
}
private string DoubleToRmb(Double number)
{
string[] s = new string[10]; s[0] = "零";
s[1] = "壹";
s[2] = "贰";
s[3] = "叁";
s[4] = "肆";
s[5] = "伍";
s[6] = "陆";
s[7] = "柒";
s[8] = "捌";
s[9] = "玖"; double m = 65899654.23;
m = number; string temp = m.ToString("0仟0佰0拾0亿0仟0佰0拾0万0仟0佰0拾0元.0角0分"); for (int i = 0; i < s.Length; i++)
{
temp = temp.Replace(i.ToString(), s[i]);
} temp = temp.Replace(".", "");
//去除多余的前导字符
while (true)
{
int i = temp.IndexOf("零");
if (i == 0)
temp = temp.Substring(2, temp.Length - 2);
else
break;
} return temp;
}
//result:陆仟伍佰捌拾玖万玖仟陆佰伍拾肆元贰角叁分
10^1 十
10^2 百
10^3 千
10^4 万
10^5 十万
10^6 百万
10^7 千万
10^8 亿
10^9 十亿(吉)
10^10 百亿
10^11 千亿
10^12 兆(万亿)
10^13 十兆
10^14 百兆
10^15 千兆(拍)
10^16 京
10^17 十京
10^18 百京(艾)
10^19 千京
10^20 垓
10^21 十垓(泽)
10^22 百垓
10^23 千垓
10^24 秭(尧)
10^25 十秭
10^26 百秭
10^27 千秭
10^28 穰
10^29 十穰
10^30 百穰
10^31 千穰
10^32 沟
10^33 十沟
10^34 百沟
10^35 千沟
10^36 涧
10^37 十涧
10^38 百涧
10^39 千涧
10^40 正
10^41 十正
10^42 百正
10^43 千正
10^44 载
10^45 十载
10^46 百载
10^47 千载
10^48 极
10^49 十极
10^50 百极
10^51 千极
10^52 恒河沙
10^53 十恒河沙
10^54 百恒河沙
10^55 千恒河沙
10^56 阿僧祇
10^57 十阿僧祇
10^58 百阿僧祇
10^59 千阿僧祇
10^60 那由他
10^61 十那由他
10^62 百那由他
10^63 千那由他
10^64 不可思议
10^65 十不可思议
10^66 百不可思议
10^67 千不可思议
10^68 无量大数
10^69 十无量大数
10^70 百无量大数
10^71 千无量大数
10^72 Espana
10^73 十Espana
10^74 百Espana
10^75 千Espana
10^76
10^77
10^78
10^79
10^80
10^81
...... ......
10^100 Googol
...... ......
10^Googol Googolplex================================10^0 一
10^-1 分
10^-2 厘
10^-3 毫
10^-4 丝
10^-5 忽
10^-6 微
10^-7 纤
10^-8 沙
10^-9 尘(纳)
10^-10 埃
10^-11 渺
10^-12 漠(皮)
10^-13 模糊
10^-14 逡巡
10^-15 须臾(飞)
10^-16 瞬息
10^-17 弹指
10^-18 刹那(阿)
10^-19 六德
10^-20 空虚
10^-21 清静(仄)
10^-22 阿赖耶
10^-23 阿摩罗
10^-24 涅槃寂静(攸)
楼上那些单位太囧了
http://topic.csdn.net/u/20080125/09/04c65875-4f50-42cd-bd63-d7b1429e42e1.html 这是测试结果:
0 零元整
20050138000000 贰拾兆零伍佰零壹億叁仟捌佰萬元整
women women
0.425 肆角叁分
20.1 贰拾元壹角
-9.63 负玖元陆角叁分
/// 货币
/// </summary>
public class Currency
{
/// <summary>
/// 把double数转换为大写的货币数
/// </summary>
/// <param name="pJe"> </param>
/// <returns> </returns>
public static string DoubleToRmbZwdx(double pJe)
{
string[] strArray = new string[] { "分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾" };
string[] strArray2 = new string[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
string str = "";
string str2 = " " + ((pJe < 0.0) ? (0.0 - pJe) : pJe).ToString("f2");//"f2"为4舍5入到两位小数
str2 = str2.Substring(str2.Length - 13);
str2 = str2.Substring(0, 10) + str2.Substring(11);
bool flag = false;
bool flag2 = false;
for (int i = 0; i < str2.Length; i++)
{
string str3 = str2.Substring((str2.Length - i) - 1, 1);
if (str3 == " ")
{
break;
}
int index = System.Convert.ToInt32(str3) - System.Convert.ToInt32("0");
if (index != 0)
{
if (flag && !flag2)
{
str = "零" + str;
}
str = strArray[i] + str;
str = strArray2[index] + str;
flag = false;
flag2 = false;
continue;
}
switch (i)
{
case 0:
{
if (flag && !flag2)
{
str = "零" + str;
}
str = "整" + str;
flag2 = true;
continue;
}
case 2:
{
if ((flag ¦ ¦ (str3 == "0")) && !flag2)
{
str = "零" + str;
}
str = "元" + str;
flag2 = true;
continue;
}
case 6:
{
if ((flag ¦ ¦ (str3 == "0")) && !flag2)
{
str = "零" + str;
}
str = "万" + str;
flag2 = true;
continue;
}
case 10:
{
if ((flag ¦ ¦ (str3 == "0")) && !flag2)
{
str = "零" + str;
}
if (flag2)
{
str = str.Substring(2);
}
str = "亿" + str;
flag2 = true;
continue;
}
}
flag = true;
} //if (Convert.ToDouble(System.Math.Abs(pJe).ToString("f2")) < 1.0)
//{
// str = "零" + str;
//} if (pJe < 0.0)
{
return ("负" + str);
}
if (pJe == 0.0)
{
return "";
}
return str;
}
}