C#开发经验技巧宝典之数字处理技巧

34 篇文章 0 订阅
  

 


<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>

 

本实例主要介绍如何对计算结果四舍五入。本实例主要是通过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;

            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 += "数值sb2绝对值" + Convert.ToString(Math.Abs(sb1)) + "/n";

            str += "float类型,数值fl1:-12.0f,数值fl2: 12.0f /n";

            str += "数值fl1绝对值:" + Convert.ToString(Math.Abs(fl1)) + "/n";

            str += "数值fl2绝对值:" + Convert.ToString(Math.Abs(fl2)) + "/n";

            MessageBox.Show(str,"数值绝对值",MessageBoxButtons.OK,MessageBoxIcon.Information);

        }

图5.18  数字绝对值

备注:出自书籍:http://www.mycreativity.net.cn/html/2007-11/276p2.html

仅作个人备忘录以及日常阅览之用!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值