`
andyaohui
  • 浏览: 54518 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

阿拉伯数字大写转换

    博客分类:
  • java
 
阅读更多

转载请注明出处,欢迎讨论!

public class GenChinese {
  private final static String[] STR_CHINESE_NUMBER={
    "零","壹","贰","叁","肆","伍","陆","柒","捌","玖"
  };
  private final static String[] STR_SHU_JI = {
    "亿","万",""
  };  //大数量级
  private final static String[] STR_SHU_JI_2={
      "千","佰","拾",""
  };//千内数量级

  public GenChinese() {
  }

  /**
   *
   * @param intNumber  需要转换的整数
   * @return  返回汉字大写数字
   */
  public String genChinese(int intNumber){
    StringBuffer rets = new StringBuffer(); //返回字符串
    int ret; //临时变量
    ret = intNumber;
    int i=1;  //存储数字长度
    while((ret=ret/10)!=0){
      i++;            //计算数字长度
    }

    //构建一维数组
    int[] intarrrayA=new int[i];
    ret = intNumber;
    int m = i;  //m临时变量
    for(m=m-1;m>=0;m--){
      intarrrayA[m]=ret%10;  //取余
      //System.out.println(intarrrayA[m]);
      ret = ret/10;
    }

    //构建二维数组
    int rows=1;  //二维数组的行数变量
    if(i%4==0){
      rows=i/4;
    }else{
      rows=i/4+1;
    }
    m = i-1; //存储数组下标临时变量
    int[][] intArrayB = new int[rows][4];
    for(int n=rows-1;n>=0;n--){
      for(int a=3;a>=0;a--){
        if(m>=0){
          intArrayB[n][a] = intarrrayA[m];
        }else{
          intArrayB[n][a] = 0;    //不足4列的前补零,形如数字44构建二维数组维{{0,0,4,4}}
        }
        m--;
      }
    }

    //打印intArrayB
    /**
    for(int a=0;a       for(int b=0;b<4;b++){
        if(b==3){
          System.out.println(intArrayB[a][b]);
        }else{
          System.out.print(intArrayB[a][b]);
        }
      }
    }
    */

    //打印汉字过程
    int iFlag = 0;  //第一行的前面0数字的处理标志
    int iZero = 0;
    for(int a=0;a       for (int b = 0; b < 4; b++) {
        if(a==0&&intArrayB[a][b]==0&&iFlag==0){
          ;
        }else{
          iFlag = 1; //
          if(a==0){  //第一行处理状况,整形不会超过3行
            if(iZero==0){         //没有出现零
              if(intArrayB[a][b]!=0){
                rets.append(STR_CHINESE_NUMBER[intArrayB[a][b]]);
                rets.append(STR_SHU_JI_2[b]); //加小数量级
              }else{
                iZero++;
              }
            }else{
              if(intArrayB[a][b]!=0){
                rets.append(STR_CHINESE_NUMBER[0]).append(STR_CHINESE_NUMBER[intArrayB[a][b]]);
                rets.append(STR_SHU_JI_2[b]); //加小数量级
                iZero = 0;
              }else{
                if(b==3){
                  rets.append(STR_CHINESE_NUMBER[0]);
                  iZero = 0;
                }else{
                  iZero++;
                }
              }
            }
          }else if(a>0){
            if (iZero == 0) {
              if (intArrayB[a][b] != 0) {
                rets.append(STR_CHINESE_NUMBER[intArrayB[a][b]]);
                rets.append(STR_SHU_JI_2[b]); //加小数量级
              }
              else {
                iZero++;
              }
            }
            else {
              if (intArrayB[a][b] != 0) {
                rets.append(STR_CHINESE_NUMBER[0]).append(STR_CHINESE_NUMBER[
                    intArrayB[a][b]]);
                rets.append(STR_SHU_JI_2[b]); //加小数量级
                iZero = 0;
              }
              else {
                if(b==3&&a!=rows-1){
                  rets.append(STR_CHINESE_NUMBER[0]);
                  iZero = 0;
                }else{
                  iZero++;
                }
              }
            }
          }
        }
      }
      if(rows==3)        //判断大数量级别读取
        rets.append(STR_SHU_JI[a]);
      else if(rows==2)
        rets.append(STR_SHU_JI[a+1]);
      else if(rows==1)
        rets.append("");
    }

    return rets.toString();
  }

  static void printArray(int[] arrayInt){
    for(int i=0;i       if(i==arrayInt.length-1)
        System.out.println(arrayInt[i]);
      else
        System.out.print(arrayInt[i]+",");
  }

   public static void main(String[] args){
    GenChinese g = new GenChinese();

    long m = System.currentTimeMillis();
    System.out.println(g.genChinese(1000050404));
    long n = System.currentTimeMillis();
    System.out.println("运行了"+(n-m));

   }
}

分享到:
评论

相关推荐

    汉语数字串与阿拉伯数字串间转换小工具(C源码)

    本项目是关于"汉语数字串与阿拉伯数字串间转换小工具",它使用C语言编写,专注于字符串操作,能够实现两种数字表示形式的互换,并且支持汉语数字串的大小写转换。这个工具对于处理中文数字和阿拉伯数字之间的转换...

    金额阿拉伯数字转换中文大写(全)

    - `setup.exe`和`金额阿拉伯数字转换中文大写(全:大到无量,小到清净).msi`是常见的安装包文件。 - `setup.exe`可能是自解压程序,直接运行即可安装应用。 - `.msi`文件是Microsoft Installer格式,适用于...

    阿拉伯数字转换为中文大写

    "阿拉伯数字转换为中文大写" 阿拉伯数字转换为中文大写是将阿拉伯数字转换为中文大写数字的过程。在这个过程中,我们需要使用数组来存储中文大写数字和单位,然后通过遍历阿拉伯数字字符串,逐个将数字转换为中文...

    python程序设计 将阿拉伯数字转换为大写数字

    将阿拉伯数字转换为大写数字,主要解决小数点问题,

    阿拉伯数字金额转换为大写数字金额

    在IT行业中,尤其是在财务软件开发或者银行系统设计中,经常需要将阿拉伯数字金额转换成大写数字金额,以便于核对、防止错误和提高安全性。这是因为大写数字在视觉上与阿拉伯数字有所区别,可以降低欺诈风险。本例子...

    汉语大写数字转换成阿拉伯数字

    汉语大写数字转换成阿拉伯数字。支持如下转换 '一千二百二十一万九千三百五十七亿一千二百二十一万九千零五十七', '一千二百二十一', '一千零十', '一万零一百', '一千零十一', '一万零一百十一', '一千二百...

    阿拉伯数字转换为中文小写数字

    在Android开发过程中,有时我们需要将阿拉伯数字(1, 2, 3...)转换成中文小写数字(一,二,三...),特别是在涉及到文化习惯或者用户界面本地化的时候,如书籍页码显示。这个任务涉及到字符串处理和字符映射,下面...

    阿拉伯数字转换成英文大写

    阿拉伯数字转换成英文大写 阿拉伯数字转换成英文大写是 Excel 中的一种实用功能,它可以将阿拉伯数字转换成英文大写形式。在 Excel 中,我们可以使用 Visual Basic 编辑器来实现这个功能。 在 Excel 中,我们首先...

    阿拉伯数字转换成英文和大写

    标题 "阿拉伯数字转换成英文和大写" 描述的是一个使用 DELPHI 开发的程序,该程序能够将Excel表格中的阿拉伯数字转换为英文和大写的表示形式,特别适用于财务领域,可以保留小数点后两位。这个程序的实现涉及到了...

    阿拉伯数字转换为中文大写数字

    环境:vs2005 C# 功能:阿拉伯数字转换为中文大写数字

    会计阿拉伯数字转换中文大写

    阿拉伯数字(1、2、3等)是我们日常使用的数字系统,但在正式的会计文档中,通常需要将这些数字转换为中文大写(壹、贰、叁等),以防止篡改和提高审计准确性。在编程领域,尤其是使用Visual Basic (VB) 这样的语言...

    将阿拉伯数字转换为汉字数字或者汉字大写金额

    1、该dll能将阿拉伯数字转换为汉字数字或者中文大写金额。例如1234567.07可转换为: “一百二十三万四千五百六十七点零七”或“壹佰贰拾叁万肆仟伍佰陆拾柒圆零柒分”。 目前支持正负千亿以内(整数部分不超过12位)...

    阿拉伯数字转换为人民币大写

    在IT领域,尤其是在财务软件开发或者自动化处理财务数据时,阿拉伯数字转换为人民币大写是一项基本的需求。这是因为中国的会计标准要求在正式的财务报表和发票中,金额必须以中文大写表示,以防止篡改和提高准确性。...

    中文数字转成阿拉伯数字 java 实现

    在Java编程语言中,将中文数字转换为阿拉伯数字是一个常见的需求,特别是在处理中文文本数据时。这个场景下,我们有一个名为“中文数字转成阿拉伯数字 java 实现”的压缩包,包含了一个实现此功能的Java包和一个单元...

    中文数字转换阿拉伯数字

    在IT领域,中文数字转换阿拉伯数字是一个常见的编程需求,尤其在中国的文化背景下,有时需要将中文表述的数字转化为阿拉伯数字用于计算或数据处理。这个任务涉及到自然语言处理(NLP)和字符串处理技术,通常通过...

    sql server阿拉伯数字转大写中文存储过程

    SQL Server 是一个功能强大且广泛应用的关系数据库管理系统,而阿拉伯数字转大写中文是一个常见的需求,例如,在财务报表、发票printing等应用场景中,需要将阿拉伯数字转换为大写中文以满足特定的格式要求。...

    阿拉伯数字转换成中文.sql

    阿拉伯数字转换成中文数字, 例如: 10转换成十,111转换成一百一十一 最高支持的数字单位亿, 再大的话可能需要自己修改

    阿拉伯数字转大写

    ### 阿拉伯数字转大写:一种实用的转换方法 #### 背景介绍 在财务、法律以及正式文档等场景下,通常需要将阿拉伯数字(即我们日常使用的0-9数字)转换为汉字大写形式。这种转换不仅能够增加文档的专业性,还能在...

    使用C#实现阿拉伯数字到大写中文的转换

    在编程领域,尤其是在开发财务软件或者处理金融数据时,经常需要将阿拉伯数字转换为大写中文数字,因为中文大写数字在正式的财务报表中是常见的格式。本篇将详细介绍如何使用C#语言来实现这一功能,以满足业务需求。...

Global site tag (gtag.js) - Google Analytics