把阿拉伯转换成汉字的方法

来源:互联网 发布:mac磁盘清理工具 编辑:程序博客网 时间:2024/06/11 16:22
 

 先插入俩个文本框,一个按钮

protected void Button1_Click(object sender, EventArgs e)
    {
        long lo = int.Parse(this.TextBox1.Text);
        this.TextBox2.Text = ToChineseNumber(lo);

    }

    private const string DXSZ = "零壹贰叁肆伍陆柒捌玖", DXDW1 = "仟佰拾", DXDW2 = "兆亿萬";
    public static string ToChineseNumber(long number)
    {
        try
        {
            long temp = 0;
            int pleng = number.ToString().Length - 1;
            string strNumber = "";
            if (number.ToString().Length == 1)
                strNumber = DXSZ.Substring(Convert.ToInt32(number), 1);
            else if (pleng <= 3)
            {
                temp = number / (long)(System.Math.Pow(10, pleng));
                if (temp > 0)
                    strNumber = ToChineseNumber(temp) + DXDW1.Substring(DXDW1.Length - pleng, 1);

                number = number % (long)(System.Math.Pow(10, pleng));

                if (number > 0)
                {
                    if (pleng != number.ToString().Length)
                        strNumber = strNumber + DXSZ.Substring(0, 1);

                    strNumber = strNumber + ToChineseNumber(number);
                }
            }
            else if (pleng <= 19)
            {
                int logleng = (int)Math.Log(Convert.ToInt32(pleng / 4), 2);
                temp = number / (long)(System.Math.Pow(10000, System.Math.Pow(2, logleng)));
                if (temp > 0)
                    strNumber = strNumber + ToChineseNumber(temp) + DXDW2.Substring(DXDW2.Length - logleng - 1, 1);

                number = number % (long)(System.Math.Pow(10000, System.Math.Pow(2, logleng)));
                if (number > 0)
                {
                    if (pleng - temp.ToString().Length + 1 != number.ToString().Length)
                        strNumber = strNumber + DXSZ.Substring(0, 1);

                    strNumber = strNumber + ToChineseNumber(number);
                }
            }

            return strNumber;
        }
        catch
        {
            throw new OverflowException("数据异常。");
        }
    }