C#编程使用技巧

数字处理技巧
本实例主要介绍如何对计算结果四舍五入。本实例主要是通过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.IndexOf('.');
            string prestr = strs[0];
            string poststr = strs[1];
            if (poststr.Length > i)
            {
                poststr = str.Substring(idot + 1, i);//截取需要位数
            }
            if (poststr.Length <= 2)
            {
                poststr = poststr + "0";
            }
            string strd = prestr + "." + poststr;
            d = Double.Parse(strd);//将字符串转换为双精度实数
            return d;
        }
参数d表示要四舍五入的数;i表示要保留的小数点后的位数。
本实例主要介绍如何将商品金额小写转换成大写。运行程序,在文本框中输入小写金额,单击【确定】按钮执行转换。主要代码如下:
     private void button1_Click(object sender, EventArgs e)
        {
  String[] Scale = { "分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "兆", "拾", "佰", "仟" };
            String[] Base = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
            String Temp = textBox1.Text.ToString();
            String Info = null;
            int index = Temp.IndexOf(".",0,Temp.Length);//判断是否有小数点
            if (index != -1)
            {
                Temp = Temp.Remove(Temp.IndexOf("."), 1);
                for (int i = Temp.Length; i > 0; i--)
                {
                    int Data = Convert.ToInt16(Temp[Temp.Length - i]);
                    Info += Base[Data - 48];
                    Info += Scale[i - 1];
                }
            }
            else
            {
                for (int i = Temp.Length; i > 0; i--)
                {
                 
                    int Data = Convert.ToInt16(Temp[Temp.Length - i]);
                    Info += Base[Data - 48];
                    Info += Scale[i+1];
                }
              
            }
            textBox2.Text = Info;
        }
本实例主要介绍如何根据生日自动计算员工年龄。通常的方法是,先从员工的生日字符中取出年份,然后用当前的日期年份减去员工出生年份,得到的整数就是员工实际年龄。主要代码如下:
              string   m_Str   =   "1984-04-04";  
              int   m_Y1   =   DateTime.Parse(m_Str).Year;  
              int   m_Y2   =   DateTime.Now.Year;
              int m_Age = m_Y2 - m_Y1;
本实例主要介绍如何设置货币数值中使用的小数位数。主要是使用NumberFormatInfo类的CurrencyDecimalDigits属性来设置在货币值中使用的小数位数,使用CultureInfo类的NumberFormat属性来指定字符串的域区样。
语法格式如下:
public int CurrencyDecimalDigits { get; set; }
属性值:要在货币值中使用的小数位数。InvariantInfo的默认值为2。
CultureInfo类提供有关特定区域性的信息(如区域性的名称、书写系统和使用的日历)以及如何设置日期和排序字符串的格式。此类有多种重载形式,本实例使用的重载形式如下:
public CultureInfo (int culture,bool useUserOverride)
参数说明
l     culture:预定义的CultureInfo标识符、现有CultureInfo对象的LCID属性或仅Windows区域性标识符。
l     UseUserOverride:一个布尔值,指示是使用用户选定的区域性设置(True),还是使用默认区域性设置(False)。
NumberFormat属性获取或设置NumberFormatInfo,它定义适合区域性的、显示数字、货币和百分比的格式。其语法格式如下:
public virtual NumberFormatInfo NumberFormat { get; set; }
属性值:一个NumberFormatInfo,它定义适合区域性的、显示数字、货币和百分比的格式。
主要代码如下:
      System.Globalization.NumberFormatInfo GN = new System.Globalization.CultureInfo("zh-CN", false).NumberFormat;
        Int64 myInt = 12345;
        private void button2_Click(object sender, EventArgs e)
        {
            GN.CurrencyDecimalDigits = 2;
            MessageBox.Show(myInt.ToString("C", GN), "保留两位小数");
        }
        private void button4_Click(object sender, EventArgs e)
        {
            GN.CurrencyDecimalDigits = 3;
            MessageBox.Show(myInt.ToString("C", GN), "保留三位小数");
     }
本实例主要介绍如何自定义货币值中的小数点,主要是使用NumberFormatInfo类的CurrencyDecimalSeparator属性来完成的。运行程序,效果如图5.1和图5.2所示。
           
图5.1  自定义$符                 图5.2  自定义*符
CurrencyDecimalSeparator属性获取或设置要在货币值中用做小数点分隔符的字符串。其语法格式如下:
public string CurrencyDecimalSeparator { get; set; }
属性值:要在货币值中用做小数点分隔符的字符串,默认值为“.”。
主要代码如下:
     System.Globalization.NumberFormatInfo GN = new System.Globalization.CultureInfo("zh-CN", false).NumberFormat;
        Int64 myInt = 123456789;
        private void button1_Click(object sender, EventArgs e)
        {
            GN.CurrencyDecimalSeparator = "$";
            MessageBox.Show("定义前:"+myInt.ToString("C")+"/n"+"定义后:"+myInt.ToString("C", GN),"自定义小数点为$符");
        }
        private void button2_Click(object sender, EventArgs e)
        {
            GN.CurrencyDecimalSeparator = "*";
            MessageBox.Show("定义前:" + myInt.ToString("C") + "/n" + "定义后:" + myInt.ToString("C", GN), "自定义小数点为*符");
        }
本实例主要介绍如何自定义货币值中对小数点左边数字分组字符,主要是使用NumberFormatInfo类的CurrencyGroupSeparator属性来设置的。运行程序,其效果如图5.3所示。
CurrencyGroupSeparator属性获取或设置在货币值中对小数点左边数字进行分组的字符串。其语法格式如下:
public string CurrencyGroupSeparator { get; set; }
属性值:在货币值中对小数点左边数字进行分组的字符串,默认值为“,”。
主要代码如下:
  private void button1_Click(object sender, EventArgs e)
        {
            System.Globalization.NumberFormatInfo GN = new System.Globalization.CultureInfo("en-US", false).NumberFormat;
            Int64 myInt = 123456789;
            GN.CurrencyGroupSeparator = "、";
            MessageBox.Show("定义前: " + myInt.ToString("C") + "/n" + "定义后: " + myInt.ToString("C", GN), "分组字符用、号");
        }
本实例主要介绍如何自定义货币值中的小数点,主要是使用NumberFormatInfo类的CurrencyGroupSizes属性来完成的。运行程序,效果如图5.4和图5.5所示。
      
图5.4  {2,3,1}格式                    图5.5  {2,3,2}格式
CurrencyGroupSizes属性获取或设置货币值中小数点左边每一组的位数。其语法格式如下:
public int[] CurrencyGroupSizes { get; set; }
属性值:货币值中小数点左边每一组的位数,默认值是一个一维数组,该数组只包含一个设置为3的元素。
主要代码如下:
    private void button1_Click(object sender, EventArgs e)
        {
            System.Globalization.NumberFormatInfo CN = new System.Globalization.CultureInfo("en-US", false).NumberFormat;
            Int64 myInt = 123456789012345;
            int[] mySizes1 = { 2, 3, 1 };
            int[] mySizes2 = { 2, 3, 2 };
            CN.CurrencyGroupSizes = mySizes1;
            MessageBox.Show("定义前:" + myInt.ToString("C") + "/n" + "定义后:" + myInt.ToString("C", CN), "{ 2, 3, 1 }格式");
            CN.CurrencyGroupSizes = mySizes2;
            MessageBox.Show("定义前:" + myInt.ToString("C") + "/n" + "定义后:" + myInt.ToString("C", CN), "{ 2, 3, 2 }格式");
        }
本实例主要介绍如何使用NumberFormatInfo类的PercentDecimalDigits属性来设置百分比值中小数点后面保留的位数。运行程序,效果如图5.6所示。
PercentDecimalDigits属性获取或设置在百分比值中使用的小数位数。其语法格式如下:
public int PercentDecimalDigits { get; set; }
属性值:在百分比值中使用的小数位数,默认值为2。
主要代码如下:
 private void button1_Click(object sender, EventArgs e)
        {
           System.Globalization.NumberFormatInfo GN = new System.Globalization.CultureInfo("zh-CN", false).NumberFormat;
            Double myInt = 0.9774;
            string strInfo=null;
            GN.PercentDecimalDigits = 1;
            strInfo += "保留一位小数:" + string.Format(myInt.ToString("P",GN));
            GN.PercentDecimalDigits = 2;
            strInfo += "/n保留二位小数:" + string.Format(myInt.ToString("P", GN));
            GN.PercentDecimalDigits = 4;
            strInfo += "/n保留四位小数:" + string.Format(myInt.ToString("P", GN));
            GN.PercentDecimalDigits = 6;
            strInfo += "/n保留六位小数:" + string.Format(myInt.ToString("P", GN));
            MessageBox.Show(strInfo,"定义效果");
        }
本实例主要介绍如何使用NumberFormatInfo类的PercentDecimalSeparator属性设置百分比小数点分隔符的字符串。运行程序,效果如图5.7所示。
PercentDecimalSeparator属性设置在百分比值中用做小数点分隔符的字符串。其语法格式如下:
public string PercentDecimalSeparator { get; set; }
属性值:在百分比值中用做小数点分隔符的字符串,默认值为“.”。
主要代码如下:
        private void button1_Click(object sender, EventArgs e)
        {
            System.Globalization.NumberFormatInfo GN = new System.Globalization.CultureInfo("zh-CN", false).NumberFormat;
            Double myInt = 0.122434;
            string strPercent = null;
            GN.PercentDecimalSeparator = " ";
            strPercent += "用空格代替小数点:" + myInt.ToString("P", GN);
            GN.PercentDecimalSeparator = "@";
            strPercent += "/n用@符代替小数点:" + myInt.ToString("P", GN);
            GN.PercentDecimalSeparator = "#";
            strPercent += "/n用#符代替小数点:" + myInt.ToString("P", GN);
            GN.PercentDecimalSeparator = "*";
            strPercent += "/n用*号代替小数点:" + myInt.ToString("P", GN);
            MessageBox.Show(strPercent, "定义效果");
        }
本实例主要介绍如何使用NumberFormatInfo类的PercentGroupSeparator属性设置百分比小数点左边的分节号。运行程序,效果如图5.8所示。
PercentGroupSeparator属性获取或设置在百分比值中对小数点左边数字进行分组的字符串。其语法格式如下:
public string PercentGroupSeparator { get; set; }
属性值:在百分比值中对小数点左边数字进行分组的字符串,默认值为“,”。
主要代码如下:
       private void button1_Click(object sender, EventArgs e)
        {
            System.Globalization.NumberFormatInfo GN = new System.Globalization.CultureInfo("zh-CN", false).NumberFormat;
            Double myInt = 12345.678;
            string strSperar = null;
            GN.PercentGroupSeparator = ",";
            strSperar += "用逗号作分隔符:" + myInt.ToString("P", GN);
            GN.PercentGroupSeparator = "、";
            strSperar += "/n用顿号作分隔符:" + myInt.ToString("P", GN);
            GN.PercentGroupSeparator = "'";
            strSperar += "/n用单引号作分隔符:" + myInt.ToString("P", GN);
            MessageBox.Show(strSperar, "定义效果");
        }
本实例主要介绍如何使用NumberFormatInfo类的PercentGroupSizes属性设置百分比小数点左边每一组的位数。运行程序,效果如图5.9所示。
PercentGroupSizes属性获取或设置百分比值中小数点左边的每一组的位数。其语法格式如下:
public int[] PercentGroupSizes { get; set; }
属性值:百分比值中小数点左边的每一组的位数。默认值是一个一维数组,该数组只包含一个设置为3的元素。
主要代码如下:
    private void button1_Click(object sender, EventArgs e)
        {
             System.Globalization.NumberFormatInfo GN = new System.Globalization.CultureInfo("zh-CN", false).NumberFormat;
            Double myInt= 510214720805231.4835;
            string strInt =null;
            strInt+= "默认格式:" + myInt.ToString("p",GN);
            int[] MySizes1 = { 2, 3, 4 };
            GN.PercentGroupSizes=MySizes1;
             strInt+= "/n{ 2, 3, 4 }格式:" + myInt.ToString("p",GN);
            int[] MySizes2 = { 2, 3, 2 };
             GN.PercentGroupSizes=MySizes2;
             strInt+= "/n{ 2, 3, 2 }格式:" + myInt.ToString("p",GN);
            int[] MySizes3 = { 1, 2, 3 };
            GN.PercentGroupSizes=MySizes3;
             strInt+= "/n{ 1, 2, 3 }格式:" + myInt.ToString("p",GN);
            MessageBox.Show(strInt, "设置效果", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
本实例主要介绍如何使用NumberFormatInfo类的PercentSymbols属性设置百分比符号。运行程序,效果如图5.10所示。
PercentSymbols属性用于获取或设置用作百分比符号的字符串。其语法格式如下:
public string PercentSymbol { get; set; }
属性值:用作百分比符号的字符串,默认值为“%”。
主要代码如下:
   private void button1_Click(object sender, EventArgs e)
        {
            System.Globalization.NumberFormatInfo GN = new System.Globalization.CultureInfo("zh-CN",false).NumberFormat;
            double intPrecnt = 102578.6584;
            string strPrecnt = null;
            GN.PercentSymbol = "%";
            strPrecnt += "默认符号: " + intPrecnt.ToString("p",GN);
            GN.PercentSymbol = "&";
            strPrecnt += "/n自定义符号&: " + intPrecnt.ToString("p", GN);
            GN.PercentSymbol = "*";
            strPrecnt += "/n自定义符号*: " + intPrecnt.ToString("p", GN);
            GN.PercentSymbol = "#";
            strPrecnt += "/n自定义符号#: " + intPrecnt.ToString("p", GN);
            MessageBox.Show(strPrecnt, "设置效果", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
本技巧主要介绍如何使用NumberFormatInfo类的NumberDecimalDigits属性设置数字小数点右边的保留位数,效果如图5.11所示。
NumberDecimalDigits属性获取或设置在数值中使用的小数位数。其语法格式如下:
public int NumberDecimalDigits { get; set; }
属性值:在数值中使用的小数位数,默认值为2。
主要代码如下:
  private void button1_Click(object sender, EventArgs e)
        {
            System.Globalization.NumberFormatInfo GN= new System.Globalization.CultureInfo("zh-CN", false).NumberFormat;
            double intNumber = 4458524.2568412547;
            string strNumber = "";
            strNumber+="默认小数位数:"+intNumber.ToString("N");
            GN.NumberDecimalDigits = 3;
            strNumber += "/n保留三位小数:" + intNumber.ToString("N",GN);
            GN.NumberDecimalDigits =5;
            strNumber += "/n保留五位小数:" + intNumber.ToString("N",GN);
            GN.NumberDecimalDigits = 7;
            strNumber += "/n保留七位小数:" + intNumber.ToString("N",GN);
            MessageBox.Show(strNumber, "设置效果", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
本实例主要介绍如何使用NumberFormatInfo类的NumberGroupSizes属性设置数字小数点左边数字分组位数,效果如图5.12所示。
NumberGroupSizes属性获取或设置数值中小数点左边每一组的位数。其语法格式如下:
public int[] NumberGroupSizes { get; set; }
属性值:数值中小数点左边每一组的位数。默认值是一个一维数组,该数组只包含一个设置为3的元素。
主要代码如下:
     private void button1_Click(object sender, EventArgs e)
        {
            System.Globalization.NumberFormatInfo GN = new System.Globalization.CultureInfo("zh-CN", false).NumberFormat;
            double intNumber = 711413414517.12;
            string strNumber = null;
            strNumber += "默认格式:" + intNumber.ToString("N",GN) ;
            int[] MySizes1 = { 1, 3, 4 };
            GN.NumberGroupSizes = MySizes1;
            strNumber += "/n{ 1, 3, 4 }格式:" + intNumber.ToString("N", GN);
            int[] MySizes2 = { 2, 3, 0 };
            GN.NumberGroupSizes = MySizes2;
            strNumber += "/n{ 2, 3, 0 }格式:" + intNumber.ToString("N", GN);
            int[] MySizes3 = { 2, 6, 2 };
            GN.NumberGroupSizes = MySizes3;
            strNumber += "/n{ 2, 6, 2 }格式:" + intNumber.ToString("N", GN);
            MessageBox.Show(strNumber, "设置效果", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
本实例主要用NumberFormatInfo类的CurrencyGroupSeparator属性格式化输入数据为货币格式。CurrencyGroupSeparator属性获取或设置在货币值中对小数点左边数字进行分组的字符串。运行程序,在输入数据文本框中,输入数字,单击“格式化输入数据为货币格式”按钮,效果如图5.13所示。
主要代码如下:
 private void button1_Click(object sender, EventArgs e)
        {
            NumberFormatInfo nfi = new CultureInfo("zh-CN", false).NumberFormat;
            nfi.CurrencyGroupSeparator = " ";
            textBox2.Text = Convert.ToDouble(textBox1.Text).ToString("c",nfi);
        }
本实例介绍如何使用Math类的BigMul方法实现数字的乘积。此方法生成两个 32 位数字的完整乘积,语法格式如下:
public static long BigMul (int a,int b)
运行程序,效果如图5.14所示。
图5.14  两个整数的乘积
主要代码如下:
     private void button1_Click(object sender, EventArgs e)
        {
            int int1 = Int32.MaxValue;
            int int2 = Int32.MaxValue;
            long longResult;
            longResult = Math.BigMul(int1, int2);
            string str = "整数" + Int32.MaxValue.ToString() + "与" + "整数" + Int32.MaxValue.ToString() + "乘积 /n";
            str += "结果:" + longResult.ToString();
            MessageBox.Show(str, "两个整数的乘积", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
本实例主要介绍利用Convert类的ToInt32方法如何把二进制数转化为十进制数。Convert类将一个基本数据类型转换为另一个基本数据类型。
ToInt32方法将指定的值转换为32位无符号整数。此方法有多种重载形式,其实现二进制转换为十进制数的语法如下:
public static uint ToUInt32 (string value,int fromBase)
参数说明
l     value:包含数字的String。
l     fromBase:value中数字的基数,必须是2、8、10或16。
l     返回值:等效于value中的数字的32位有符号整数。如果value为空则返回值为零。
运行程序,在二进制文本框中输入二进制数,单击“二进制转换为十进制”按钮,效果如图5.15所示。
主要代码如下:
  private void button1_Click(object sender, EventArgs e)
        {
            textBox2.Text = Convert.ToInt32(textBox1.Text.Trim(),2).ToString();
        }
本实例实现将二进制数转换为八进制数。首先利用Convert类的ToInt32方法把二进制数转换为十进制数,然后利用Convert类的ToString方法转换成八进制数。ToString方法将指定的32位有符号整数的值转换为它的等效String表示形式。
public static string ToString (int value,int toBase)
参数说明
l     value:32位的有符号整数。
l     ToBase:返回值的基数,必须是2、8、10或16。
返回值:以toBase为基数的value的String表示形式。
主要代码如下:
     private void button1_Click(object sender, EventArgs e)
        {
            //把二进数转换为十进制数
            int intTen = Convert.ToInt32(textBox1.Text.Trim(),2);
            //把十进制数转换为八进制数
            textBox2.Text = Convert.ToString(intTen,8);
        }
本实例主要介绍如何将二进制数转换为十六进制数。首先利用Convert类的ToInt32方法把二进制数转换为十进制数,然后利用Convert类的ToString方法转换成十六进制数。
运行程序,在二进制文本框中输入二进制数,单击转换按钮,效果如图5.16所示。
图5.16  二进制转换为十六进制
主要代码如下:
    private void button1_Click(object sender, EventArgs e)
        {
            //把二进制数转换为十进制数
            int intTen = Convert.ToInt32(textBox1.Text.Trim(),2);
            //把十进制数转换为十六进制数
            textBox2.Text = Convert.ToString(intTen,16);
        }
本实例主要介绍如何用Random类的Next方法随机生成0~9之间的整数。Random类表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备。Next方法返回一个指定范围内的随机数。主要代码如下:
Random rd = new Random();
        private void button1_Click(object sender, EventArgs e)
        {
       MessageBox.Show("0-9随机整数:/n"+rd.Next(0,9).ToString(),"随机整数", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
本实例主要介绍如何用Random类的NextDouble方法随机生成0~1之间的数。RNextDouble方法返回一个介于0.0和1.0之间的随机数。运行程序,单击“确定”按钮,效果如图5.17所示。主要代码如下:
Random rd = new Random();
        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("0-1随机小数:/n" + rd.NextDouble(), "随机小数", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
本实例介绍如何使用Math类的Abs方法实现数字的绝对值。此方法有多种重载形式,本实例所用的重载形式如下:
public static decimal Abs (decimal value)
此重载形式返回Decimal数字的绝对值。运行程序,效果如图5.18所示。主要代码如下:
  private void button1_Click(object sender, EventArgs e)
        {
            sbyte sb1 = -16, sb2 = 16;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值