C#的开发经验技巧宝典.docx
5.1数字处理技巧0140如何对计算结果四舍五弓本实例主要介绍如何对计算结果四舍五入。本实例主要是通过Math类的Pow方法来实现 的。运行程序,在文本框中输入数字,单击“确定”按钮四舍五入文本框中的数字。主要代 码如下:public static double Round(double d, int i)if (d >= 0)(d += 5 * Math,Pow(10, -(i + 1);/) else (d += -5 * Math.Pow(10, -(i + 1);)string str = d.ToString();string strs = str.Split,');int idot = str. I ndexOf('.');string prestr = strs0;string post str = strs1;if (poststr.Length > i)(post str = str.Substring(idot + 1, i); 截取需要位数if (poststr.Length <= 2)post str = post str + "O"string st rd = prestr + "J + post str;d = Double.Parse(strd); 将字符串转换为双精度实数return d;参数d表示要四舍五入的数;i表示要保留的小数点后的位数。0141如何将商品金摸小写转危 换成大写本实例主要介绍如何将商品金额小写转换成大写。运行程序,在文本框中输入小写金额, 单击【确定】按钮执行转换。主要代码如下:private void button 1_Qick( object sender, Event Args e)String Scale = “分”角“,“元,”拾佰“,”仟“万'拾“,“佰“,”仟”亿“,”拾”,”佰“仟”, "兆'拾'佰一仟';String口 Base = “零”壹“,“贰“叁“,”肆”伍“,”陆“,”柒”捌”,“玖" ;String Temp = textBox1.Text.ToString();String Info = null;int index = Temp.lndexOf(".”,0,Temp.Length);判断是否有小数点if (index != -1)(Temp = Temp. Ftemove(Temp. I ndexOf , 1);for (int i = Temp.Length; i > 0; i)(int Data = Convert.Tolnt16(TempTemp.Length - i);Info += BaseData - 48;Info += Scalei - 1;elsefor (int i = Temp.Length; i > 0; i-)(int Data = Convert.Tolnt16(TempTemp.Length - i);Info += BaseData - 48;Info += Scalei+1;text Box2.Text = Info;0142如何根据生日自动计算员工年龄本实例主要介绍如何根据生日自动计算员工年龄。通常的方法是,先从员工的生日字符中 取出年份,然后用当前的日期年份减去员工出生年份,得到的整数就是员工实际年龄。主要 代码如下:string m_Str = "1984-04-04"int m_Y1 = Dat eTime. Parse(m_Str), Year;int m_Y2 = Dat eTime. Now. Year;int m_Age = m_Y2 - m_Y1;如何设置货币值中使用标 的小数位数本实例主要介绍如何设置货币数值中使用的小数位数。主要是使用NumberFormatlnfo类 的CurrencyDecimalDigits属性来设置在货币值中使用的小数位数,使用Cultureinfo类的N umberFormat属性来指定字符串的域区样。语法格式如下:public int Currency Decimal Digits get; set; 属性值:要在货币值中使用的小数位数。Invariantinfo的默认值为2。Cultureinfo类提供有关特定区域性的信息(如区域性的名称、书写系统和使用的日历) 以及如何设置日期和排序字符串的格式。此类有多种重载形式,本实例使用的重载形式如下: public Cultureinfo (int culture,bool usellserOverride)参数说明I culture:预定义的Cultureinfo标识符、现有Cultureinfo对象的LCID属性或仅Windows区域性标识 符。I UsellserOverride: 一个布尔值,指示是使用用户选定的区域性设置(True),还是使用默认区域性 设置(False) oNumberFormat属性获取或设置NumberFormatlnfo,它定义适合区域性的、显示数字、货 币和百分比的格式。其语法格式如下:public virtual Number Format Info NumberFbrmat get; set; 属性值:一个NumberFormatlnfo,它定义适合区域性的、显示数字、货币和百分比的格 式。主要代码如下:System.Gobalization.NumberFormatlnfo GN = new System.Gobalization.Culturelnfo("zh-CN,', fal se). Number Format;Int64 my I nt = 12345;private void button2_Qick(object sender, EventArgs e)GN.CurrencyDecimalDigits = 2;MessageBox.Show(mylnt.ToStringC'C*, GN), ”保留两位小数)private void button4_Qick(object sender, EventArgs e)GN.CurrencyDecimalDigits = 3;MessageBox.Show(mylnt.ToStringC,C, GN), ”保留三位小数)0144如何自是义货币值中的 小数点本实例主要介绍如何自定义货币值中的小数点,主要是使用NumberFormatlnfo类的CurrencyDecimalSeparator属性来完成的。运行程序,效果如图5. 1和图5. 2所示。图5.1自定义$符图5.2自定义*符CurrencyDecimalSeparator属性获取或设置要在货币值中用做小数点分隔符的字符串。其语法格式如下:public string Currency Decimal Separator get; set; 属性值:要在货币值中用做小数点分隔符的字符串,默认值为主要代码如下:Sy stem.Gobalization.NumberFormatlnfo GN = new System.Globalization.Culturelnfo("zh-CN", fal se).NumberFormat;Int64 mylnt = 123456789;private void button1_Qick(object sender, EventArgs e)(GN.Currency Decimalseparator =MessageBox.Show("定义前:"+ mylnt.ToString("C')+"n"+ "定义后:"+ mylnt.ToString("C', GN)," 自定义小数点为$符");private void button2_aick(object sender, EventArgs e)(GN.Currency Decimalseparator =MessageBox.Show("定义前:"+ mylnt.ToString("C) + "n" + "定义后:"+ mylnt.ToString(" C, GN),"自定义小数点为*符)如何自定义货币值中小痣 数点左边数字分组字符把本实例主要介绍如何自定义货币值中对小数点左边数字分组字符,主要是使用NumberFo rmatlnfo类的CurrencyGroupSeparator属性来设置的。运行程序,其效果如图5. 3所示。CurrencyGroupSeparator属性获取或设置在货币值中对小数点左边数字进行分组的字符 串。其语法格式如下: public string CurrencyGroupSeparator get; set; 属性值:在货币值中对小数点左边数字进行分组的字符串,默认值为主要代码如下:private void button1_aick(object sender, EventArgs e) (System.Gobalization.NumberFormatlnfo GN = new S/stem.Globalization.Culturelnfo("en-US', false) .NumberFormat;Int64 mylnt = 123456789;GN.CurrencyGroupSeparator ="、MessageBox.Show("定义前:"+ mylnt.ToString("C) + "n" + "定义后:"+ mylnt.ToStri ng("C, GN),"分组字符用、号) 如何自定义货币值中小房数点左边军一组的位数 世本实例主要介绍如何自定义货币值中的小数点,主要是使用NumberFormatlnfo类的CurrencyGroupSizes属性来完成的。运行程序,效果如图5. 4和图5. 5所示。SX6 : 123. «». TW.012.345 00图 5.5 2,3,2格式图 5.4 2,3,1格式CubencyGroupSizes属性获取或设置货币值中小数点左边每组的位数。其语法格式如下:磨public int CurrencyGroupSzes get; set; 属性值:货币值中小数点左边每一组的位数,默认值是一个一维数组,该数组只包含一个设置为3的元素。主要代码如下:private void button1_aick(object sender, EventArgs e)System.Gobalization.NumberFormat Info CN = new Sy stem.Globalization.CulturelnfoC'en-US', false).Number Format;Int64 mylnt = 123456789012345;int mySzesI = 2, 3, 1 ;int mySzes2 = 2, 3, 2 ;CN. Currency GroupSzes = mySzesI;MessageBox.Show("定义前:" + mylnt.ToStringC'C*) + “n" + “定义后:" + mylnt.ToString( CN), M 2, 3, 1 格式)CN.QjrrencyGroupSzes = mySzes2;MessageBox.Show("定义前:"+ mylnt.ToStringC*C*) + MnH + ”定义后:" + mylnt.ToStringCC1, CN), M 2, 3, 2 格式)警普修百分比值中 小歌的住数本实例主要介绍如何使用NumberFormatlnfo类的PercentDecimalDigits属性来设置百分比值中小数点后面保留的位数。运行程序,效果如图5. 6所示。PercentDecimalDigits属性获取或设置在百分比值中使用的小数位数。其语法格式如下:public int PercentDecimalDigits get; set; 属性值:在百分比值中使用的小数位数,默认值为2。主要代码如下:private void button1_Qick(object sender, EventArgs e)Wt I ITSystem.Gobalization.NumberFormatlnfo GN = new System.Gobalization.CuIturelnfo("zh-CNH, false). Number Format;Double mylnt = 0.9774;string strlnfo=null;GN. Percent Decimal Digits = 1;strinfo += ”保留一位小数:M + string.Format(mylnt.ToString(HP',GN);GN. Percent Decimal Digits = 2;strinfo += "n 保留二位小数:" + string.Format(mylnt.ToString("P', GN);GN. Percent Decimal Digits = 4;strinfo += "n 保留四位小数:" + string.Format(mylnt.ToString(',P, GN);GN. Percent Decimal Digits = 6;strinfo += "n 保留六位小数:" + string.Format(mylnt.ToString("P, GN); MessageBox.Show(strlnfo," 定义效果)0148如何自定义百分比小教q 上本实例主要介绍如何使用NumberFormatlnfo类的PercentDecimalSeparator属性设置目 分比小数点分隔符的字符串。运行程序,效果如图5. 7所示。PercentDecimalSeparator属性设置在百分比值中用做小数点分隔符的字符串。其语法格 式如下:public string PercentDecimalSeparator get; set; 属性值:在百分比值中用做小数点分隔符的字符串,默认值为主要代码如下:private void button1_Qick(object sender, EventArgs e)(Sy stem.Gobalization. NumberFormatlnfo GN = new System.Globalization.Culturelnfo("zh-CN", false) .NumberFormat;Double mylnt = 0.122434;: w m.: i, n*. u? tn rnrwr.mnonstring str Percent = null;GN. Percent Decimal Separator ="strPercent += "用空格代替小数点:" + mylnt.ToStringC'P', GN);GN. Percent Decimalseparator =strPercent += ”5用符代替小数点:M + mylnt.ToString(MP GN);GN. Percent Decimal Separator = "#H;strPercent += ”5用#符代替小数点:" + mylnt.ToStringC'P', GN);GN. Percent Decimal Separator = *'*H;str Percent += "n 用* 号代替小数点:" + mylnt.ToString(MPw, GN);Messag eBox. Show (st r Per cent定义效果)0149如何自定义百分比小数危 在左边数字分组字符本实例主要介绍如何使用NumberFormatlnfo类的PercentGroupSeparator属性设置百分 比小数点左边的分节号。运行程序,效果如图5. 8所示。PercentGroupSeparator属性获取或设置在百分比值中对小数点左边数字进行分组的字 符串。其语法格式如下:public string PercentGroupSeparator get; set; 属性值:在百分比值中对小数点左边数字进行分组的字符串,默认值为主要代码如下:private void button1_aick(object sender, EventArgs e)(Sy stem.Gobalization. NumberFormatlnfo GN = new System.Globalization.Culturelnfo("zh-CN", false) .NumberFormat;Double mylnt = 12345.678;string strSperar = null;GN.PercentGroupSeparator =",strSperar +="用逗号作分隔符:"+ mylnt.ToString("P', GN);GN. PercentGroupSeparator ="、strSperar += "n 用顿号作分隔符:"+ mylnt.ToString("P", GN);GN. PercentGroupSeparator =;strSperar += "n 用单引号作分隔符:"+ mylnt.ToString("P', GN);如何自是义百分比小教危 在左边摹Tr的位数MessageBox.Show(strSperar,"定义效果)本实例主要介绍如何使用NumberFormatlnfo类的PercentGroupSizes属性设置百分比小 数点左边每一组的位数。运行程序,效果如图5. 9所示。PercentGroupSizes属性获取或设置百分比值中小数点左边的每一组的位数。其语法格式 如下:public int PercentGroupSzes get; set; 属性值:百分比值中小数点左边的每一组的位数。默认值是一个一维数组,该数组只包 含一个设置为3的元素。主要代码如下:private void button1_aick(object sender, EventArgs e)System.Gobalization.NumberFormatlnfo GN = new System.Gobalization.Culturelnfo("zh-CN “,false). Number Format;Double mylnt= 510214720805231.4835;string strlnt =null;strlnt+="默认格式:” + myl nt.ToString(MpM,GN);int MySzesI = 2, 3, 4 ;GN. PercentGroupSizes= MySzesI;strlnt+= Mn 2 3, 4 格式:" + mylnt.ToString(MpM,GN);int MySzes2 = 2, 3, 2 ;GN. PercentGroupSzes= MySizes2;strlnt+= "n 2, 3, 2 格式:H + mylnt.ToString("p",GN);int MySzes3 = 1, 2, 3 ;GN. PercentGroupSzes= MySzes3;strlnt+= "n 1, 2, 3 格式:"+ mylnt.ToString("p",GN);MessageBox.Show(strlnt,"设置效果",MessageBoxButtons.OK, MessageBoxIcon.I nformation);0151如何自定义百分比符号G本实例主要介绍如何使用NumberFormatlnfo类的PercentSymbols属性设置自分比符号。 运行程序,效果如图5. 10所示。PercentSymbols属性用于获取或设置用作百分比符号的字符串。其语法格式如下: public string Percent Symbol get; set; 属性值:用作百分比符号的字符串,默认值为“%” O主要代码如下:private void button 1_Qick(object sender, EventArgs e)(Sy stem.Gobalization. NumberFormatlnfo GN = new System.Globalization.Culturelnfo("zh-CN", false).NumberFormat;double intPrecnt = 102578.6584;string strPrecnt = null;GN. Percent Symbol = "%"strPrecnt +="默认符号:"+ intPrecnt.ToString("p",GN);GN.PercentSymbol =strPrecnt += "n 自定义符号&: " + intPrecnt.ToString("p", GN);GN.PercentSymbol =strPrecnt += "n 自定义符号*: " + intRecnt.ToString("p", GN);strPrecnt += *'n 自定义符号#: " + intPrecnt.ToString(Mp", GN);MessageBox.Show(strPreent,"设置效果",MessageBoxButtons.OK, MessageBoxIcon. I nformation);)如何自足义数字小数点4 右边的保留位数本技巧主要介绍如何使用NumberFormatlnfo类的NumberDecimalDigits属性设置数字小 数点右边的保留位数,效果如图5. 11所示。NumberDecimalDigits属性获取或设置在数值中使用的小数位数。其语法格式如下:public int NumberDecimalDigits get; set; 属性值:在数值中使用的小数位数,默认值为2。主要代码如下:private void button 1 _Qick(object sender, EventArgs e)(System.Gobalization.NumberFormatlnfo GN= new System.Gobalization.CulturelnfoCh-CN", false).Number Format;double intNumber = 4458524.2568412547;string strNumber = ,M;strNumber+ = ”默认小数位数:"+intNumber.ToString(“N)GN.Number Decimal Digits = 3;strNumber += "n 保留三位小数:" + intNumber.ToString(,N,1,GM);GN.Number Decimal Digits =5;strNumber += "n 保留五位小数:" + intNumber.ToStnng(HNH,GN);GN.Number Decimal Digits = 7;strNumber += "n 保留七位小数:" + intNumber.ToString(,N,1,GM);MessageBox.Show(strNumber,"设置效果",MessageBoxButtons.OK, MessageBoxIcon.Informa tion); &n MUMUGMKMMMk如何自定义数字小薮点w 左龙分组位数本实例主要介绍如何使用NumberFormatInfo类的NumberGroupSizes属性设置数字小数 点左边数字分组位数,效果如图5. 12所示。NumberGroupSizes属性获取或设置数值中小数点左边每一组的位数。其语法格式如下:public int NumberGroupSzes get; set; 属性值:数值中小数点左边每一组的位数。默认值是一个一维数组,该数组只包含一个 设置为3的元素。主要代码如下:private void button 1 _Q ick( obj ect sender, Event Args e)(System.Gobalization.NumberFormatlnfo GN = new System.Globalization.CXjlturelnfo(nzh-CN", false).Number Format;double intNumber = 711413414517.12;string strNumber = null;strNumber += ”默认格式:” + intNumber.ToString(MN",GN);int MySzesI = 1, 3, 4 ;GN. NumberGroupSzes = MySizesI;strNumber += Mn 1, 3, 4 格式:" + intNumber.ToStringC'N", GN);int MySzes2 = 2, 3, 0 ;GN. NumberGroupSzes = MySizes2;strNumber += Mn 2, 3, 0 格式:M + intNumber.ToString(MNM, GM);int MySzes3 = 2, 6, 2 ;GN. NumberGroupSzes = MySizes3;strNumber += Mn 2 6, 2 格式:" + intNumber.ToString(',N,', GN);MessageBox.Show(strNumber,"设置效果",MessageBoxButtons.OK, MessageBoxIcon.Informa tion);本实例主要用NumberFormatlnfo类的CurrencyGroupSeparator属性格式化输入数据为 货币格式。CurrencyGroupSeparator属性获取或设置在货币值中对小数点左边数字进行分组 的字符串。运行程序,在输入数据文本框中,输入数字,单击“格式化输入数据为货币格式” 按钮,效果如图5. 13所示。主要代码如下:private void button1_Qick(object sender, EventArgs e)(NumberFormatlnfo nfi = new Culturelnfo("zh-CN", false).NumberFbrmat;nfi.CurrencyGroupSeparator ="textBox2.Text = Convert.ToDouble(textBox1 .Text).ToString("c",nfi);如何计算两个整数的乘V本实例介绍如何使用Math类的BigMul方法实现数字的乘积。此方法生成两个32位数 字的完整乘积,语法格式如下: public static long BigMul (int a,int b)运行程序,效果如图5. 14所示。图5.14两个整数的乘积主要代码如下:private void button1_Qick(object sender, EventArgs e)(int inti = lnt32.MaxValue;int int2 = lnt32.MaxValue;IflOOlMOMOOlDlong longResult;longFtesult = Math.BigMul(int1, int2);string str = "整数” + I nt32.MaxValue.ToString() + “与“ + “整数” + lnt32.MaxValue.ToStri ng() + ”乘积 n”;str += "结果:" + longFtesult.ToString();MessageBox.Show(str, ”两个整数的乘积",MessageBoxButtons.OK, MessageBoxIcon.Informat ion);)0156如何将二进制数转换为 十进制教本实例主要介绍利用Convert类的Tolnt32方法如何把二进制数转化为十进制数。Conve rt类将一个基本数据类型转换为另一个基本数据类型。Tolnt32方法将指定的值转换为32位无符号整数。此方法有多种重载形式,其实现二进制 转换为十进制数的语法如下:public static uint ToUlnt32 (string value,int fromBase)参数说明I value:包含数字的StringoI fromBase: value中数字的基数,必须是2、8、10或16。I返回值:等效于value中的数字的32位有符号整数。如果value为空则返回值为零。运行程序,在二进制文本框中输入二进制数,单击“二进制转换为十进制”按钮,效果 如图5. 15所示。主要代码如下:private void button1_aick(object sender, B/entArgs e)(textBox2.Text = Convert.Tol nt32(textBox1.Text.Trim(),2).ToStringO;0157如何将二进制教转换为您 人进制教本实例实现将二进制数转换为八进制数。首先利用Convert类的Tolnt32方法把二进制 数转换为十进制数,然后利用Convert类的ToString方法转换成八进制数。ToString方法将指定的32位有符号整数的值转换为它的等效String表示形式。public static string ToString (int value,int toBase)参数说明I value: 32位的有符号整数。I ToBase:返回值的基数,必须是2、8、10或16。返回值:以toBase为基数的value的String表示形式。主要代码如下:private void button1_Qick( object sender, Event Args e)把二进数转换为十进制数int intTen = Convert.Tolnt32(textBox1 .Text.Trim(),2);把十进制数转换为八进制数textBox2.Text = Convert.ToString(intTen,8);如何将二进制敷锌换为Z 十六进制数本实例主要介绍如何将二进制数转换为十六进制数。首先利用Convert类的Tolnt32方法把二进制数转换为十进制数,然后利用Convert类的ToString方法转换成十六进制数。运行程序,在二进制文本框中输入二进制数,单击转换按钮,效果如图5. 16所示。图5.16二进制转换为卜六进制主要代码如下:private void button1_Qick(object sender, EventArgs e)把二进制数转换为十进制数int intTen = Convert.Tolnt32(textBox1.Text.Trim(),2);把十进制数转换为十六进制数text Box2.Text = Convert.ToString(intTen, 16);0159如何实现O- 9之间的随标 机整教本实例主要介绍如何用Random类的Next方法随机生成09之间的整数。Random类表示 伪随机数生成器,种能够产生满足某些随机性统计要求的数字序列的设备。Next方法返回 一个指定范围内的随机数。主要代码如下:Random rd = new Random();private void button1_Qick(object sender, EventArgs e)(MessageBox.Show("0-9 随机整数:n"+rd.Next(0,9).ToString(),"随机整数",MessageBoxButtons.O K, MessageBoxIcon.I nformation);0160如何实现O- 1之间的睫Ml本实例主要介绍如何用Random类的NextDouble方法随机生成01之间的数。RNextDou ble方法返回一个介于0. 0和L 0之间的随机数。运行程序,单击“确定”按钮,效果如图5. 17所示。主要代码如下: Random rd = new Random();private void button1_Qick(object sender, EventArgs e)MessageBox.Show("0-1 随机小数:n" + rd.NextDouble(),"随机小数",MessageBoxButtons.O K, MessageBoxI con.I nformation);0161如何返回数字的绝对值本实例介绍如何使用Math类的Abs方法实现数字的绝对值。此方法有多种重载形式,本 实例所用的重载形式如下:public static decimal Abs (decimal value)此重载形式返回Decimal数字的绝对值。运行程序,效果如图5.18所示。主要代码如下:private void button 1 _Qick(object sender, EventArgs e)sbyte sb1 = -16, sb2 = 16;float fl1 = -12.0f, fl2 = 12.0f;string str =str += "sbyte 类型,数值 sb1: 16,数值 sb2: 16" + “n”;str += "数值 sb1 绝对值:" + Convert.ToString(Math.Abs(sb1) + “n”;str