阿拉伯数字转汉字

1001000读作一百万一千

如果划线部分去掉则

1001000读作一百万○一千

 public static string CmycurD(decimal num)
        {
            string strNum = "○一二三四五六七八九";            //0-9所对应的汉字
            string strUnit = "万千百十亿千百十万千百十 "; //数字位所对应的汉字
            string strGet = "";    //从原num值中取出的值 

            string strTurn = "";    //数字的字符串形式
            string strOut = "";  //人民币大写金额形式
            int i;    //循环变量
            int j;    //num的值乘以100的字符串长度
            string ch1 = "";    //数字的汉语读法
            string ch2 = "";    //数字位的汉字读法
            int nzero = 0;  //用来计算连续的零值是几个
            int intTemp;            //从原num值中取出的值 

            //num = Math.Round(Math.Abs(num), 2);    //将num取绝对值并四舍五入取2位小数
            num = Math.Round(num, 0);
            //str4 = ((long)(num * 100)).ToString();        //将num乘100并转换成字符串形式
            strTurn = ((long)num).ToString();
            j = strTurn.Length;      //找出最高位
            if (j > 12) { return "溢出"; }
            strUnit = strUnit.Substring(13 - j);   //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分 

            //循环取出每一位需要转换的值
            for (i = 0; i < j; i++)
            {
                strGet = strTurn.Substring(i, 1);   //取出需转换的某一位的值
                intTemp = Convert.ToInt32(strGet);     //转换为数字
                //if (i != (j - 1) && i != (j - 5) && i != (j - 9))
                {
                    //当所取位数不为个、万、亿、万亿上的数字时
                    if (strGet == "0")//如果是0
                    {
                        ch1 = "";
                        ch2 = "";
                        nzero = nzero + 1;
                    }
                    else
                    {
                        if (nzero != 0)//如果计数>0
                        {
                            ch1 = "○" + strNum.Substring(intTemp, 1);
                        }
                        else
                        {
                            ch1 = strNum.Substring(intTemp, 1);
                        }
                        ch2 = strUnit.Substring(i, 1);
                        nzero = 0;
                    }
                }
                if (i == (j - 9) || i == (j - 5))
                {
                    //如果该位是亿位或元位,则必须写上
                    ch2 = strUnit.Substring(i, 1);
                    if (nzero<4) nzero = 0;
                }
                strOut = strOut + ch1 + ch2;
            }
            strOut = (strOut.Substring(0, 2).Replace("一十", "十") + strOut.Substring(2)).Replace("亿万", "亿");
            return strOut;
        }

原文地址:https://www.cnblogs.com/hardenzhao/p/12264205.html

时间: 2024-11-05 20:47:51

阿拉伯数字转汉字的相关文章

阿拉伯数字 转 汉字大写

参考 算法的乐趣 阿拉伯数字 转 汉字大写   如 123 > 壹佰贰拾叁 思路: 如:a = 123,1234,1200 按权位分为 {"","拾","佰","仟"}, 按节权位分{"","万","亿","万亿"} 1.将 a 按4位分隔,循环每个分隔,通过位移确定权位,进行转换中文. 然后确定每个分隔后的节权位. 注意对0的转换: 1.1

C#实现阿拉伯数字转换为汉字数字

项目中用到,保存下来为日后用到节约时间 公共方法(将单个数字转换为汉字) private char ToNum(char x) { string strChnNames = "零一二三四五六七八九"; string strNumNames = "0123456789"; return strChnNames[strNumNames.IndexOf(x)]; }    1.转换为为整数(最高位数为亿) private string ChangeInt(string x

java实现 阿拉伯数字转换为汉字数字 算法

package test; public class NumberFormatTest { static String[] units = { "", "十", "百", "千", "万", "十万", "百万", "千万", "亿","十亿", "百亿", "千亿",

将阿拉伯数字转换为中文书面数字

前几天有人在群里写这个,好像挺纠结的样子,就顺手帮他写了一个. 主要思路是中文的数字读法是四位四位分的,高位数字的读法就是xxxx亿xxxx万xxxx. void Start () { //测试数据 Debug.Log (full_toword(987654321)); Debug.Log (full_toword(907654321)); Debug.Log (full_toword(9000900654321)); Debug.Log (full_toword(9000900000000))

动手动脑,第六次Tutorial——数组

动手动脑,第六次Tutorial--数组 这次的Tutorial讲解了Java中如何进行数组操作,包括数组声明创建使用和赋值运算,写这篇文章的目的就是通过实际运用已达到对数组使用的更加熟练,下面是实践代码之后的感悟与总结: 动手动脑1:PassArray.java 1 // PassArray.java 2 // Passing arrays and individual array elements to methods 3 4 public class PassArray { 5 6 pub

基于Android的计步器(Pedometer)的讲解(二)——柱状图分析

写正文之前,小小的吐槽一下,还有一个月就放假了,作业.考试.还有实习(研一,下半学期课不多,也不想在实验室)的考虑,最近基于hadoop的数据分析马上也要验收了,真的忙的"外焦里嫩"啊!目前定的方向是Android开发,所以想过年来了找一个Android的实习工作,提高一点在真正的项目中的经验. 好了,说了这么多废话,开始进入正题吧. 整个计步器的项目已经上传到github上了,感兴趣的朋友可以去看看(最好能给小弟我打颗星星哦~) https://github.com/29677751

黑马程序员-入学笔试题

笔试结束,列一下笔试题和我的解答,最后得分29.7. 1. 编写一个类,在main方法中定义一个Map对象(采用泛型),加入若干个对象,然后遍历并打印出各元素的key和value. package com.itheima; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class Test1 { public static void m

MySQL数据库高级(二)——自定义函数

MySQL数据库高级(二)--自定义函数 一.自定义函数简介 自定义函数 (user-defined function UDF)是一种对MySQL扩展的途径,其用法和内置函数相同.自定义函数的两个必要条件:A.参数B.返回值(必须有).函数可以返回任意类型的值. 二.自定义函数的使用 1.自定义函数语法 CREATE?FUNCTION?function_name(parameter_nametype,[parameter_name type,...]) RETURNS?{STRING|INTEG

阿拉伯数字转中文(汉字)数字

/** * 数字工具类型 * @author rubekid * */ public class NumberUtils { private final static String[] GROUP_UNITS = {"", "万", "亿", "兆"}; private final static String[] BASE_UNITS = { "", "十", "百"