数字转换为中文大写

转载 2006年06月21日 12:15:00
//   模块:数字转换为中文大写

#include "stdafx.h"
static char   *unit1[] = { "拾","佰","仟" };
static char   *unit2[] = { "万","亿"  };
static char   *digital[] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};

//   功能:将万以内的数据转换成字符,字符串与阅读方面相反
//   long level[in]:要转换的数据
//   char *buf[out]:字符输出
//   备注:内部函数
//******************************************************
static void GetLevelText(long level,char *buf)
{
   int digit;
   BOOL bPreZero=FALSE;
   BOOL bZeroValidate=FALSE;
   int i=0;
   int  unit=-1;
   while(level){
      digit=level%10;
      if(digit)
      {
         if(bPreZero&&bZeroValidate)
         {
            strcat(buf,digital[0]);
            i+=2;
         }
         if(unit!=-1)// buf[i++]=unit1[unit];//unit
         {
            strcat(buf,unit1[unit]);
            i+=2;
         }
         strcat(buf,digital[digit]);
         i+=2;
         bPreZero=FALSE;
         bZeroValidate=TRUE;
      }else
      {
         bPreZero=TRUE;
      }
      unit++;
      level/=10;
   }
   buf[i]=0;
}

//************************************************************
//   功能:数据转换成中文字符
//   long num[in]:要转换的数据
//   char *buf[out]:字符输出
//  返回值:TRUE-转换成功,FALSE-失败,数据超过处理范围
//************************************************************
BOOL Num2UpDigit(long num,char *buf)
{
   long level1,level2,level3;
   char level1buf[17]={0},level2buf[17]={0},level3buf[17]={0};
   int  p=0;
   level1=num%10000;
   num/=10000;
   level2=num%10000;
   num/=10000;
   level3=num;
   if(num/10000) return FALSE;//超过数据处理范围
   
   //将数据分成三级
   if(level1)   GetLevelText(level1,level1buf);
   if(level2)   GetLevelText(level2,level2buf);
   if(level3)   GetLevelText(level3,level3buf);
   
   if(level3){
      for(int i=strlen(level3buf)-2;i>=0;i-=2)
      {
         memcpy(buf+p,level3buf+i,2);
         p+=2;
      }
      memcpy(buf+p,unit2[1],2);//级别单位
      p+=2;
   }
   if(level2){
      if(level3&&level2/1000==0)//加零
      {
         memcpy(buf+p,digital[0],2);
         p+=2;
      }
      for(int i=strlen(level2buf)-2;i>=0;i-=2)
      {
         memcpy(buf+p,level2buf+i,2);
         p+=2;
      }
      memcpy(buf+p,unit2[0],2);//级别单位
      p+=2;
   }else if(level3&&level1)//加零
   {
      memcpy(buf+p,digital[0],2);
      p+=2;
   }
   if(level1){
      if((level2||level3)&&level1/1000==0&&!(level3&&!level2))//加零
      {
         memcpy(buf+p,digital[0],2);
         p+=2;
      }
      for(int i=strlen(level1buf)-2;i>=0;i-=2)
      {
         memcpy(buf+p,level1buf+i,2);
         p+=2;
      }
   }
   buf[p]=0;
   return TRUE;
}

js 数字金额大小写转换成中文大写

function Arabia_to_Chinese(Num) { for(i=Num.length-1;i>=0;i--) { Num = Num.replace(",","")//替换to...

阿拉伯数字小写金额转换成中文大写金额C程序说明

阿拉伯数字小写金额转换成中文大写金额C程序说明 1、问题的提出      寒假帮同学交缴话费时,不经意间看到收据上同时有小写金额和大写金额,想想各种各样的票据诸如缴费收据、银行业务回单、商场销售凭...

JAVA科学计数法,金额数字,转换为中文大写字

java操作金额

將数字金额转换为中文大写

注:参考百度经验中的文章,并对其进行修改,使此工具类可以正常运行; 一、工具类 import java.text.DecimalFormat; /**  * 對數字進行操作的工具類...
  • IRhythm
  • IRhythm
  • 2016年09月27日 10:51
  • 362

阿拉伯数字转换成对应的大写中文输出

记得上次换工作时去某BOSS厂商面试时,有这样一道题(RT),当时只是简单的说说想法,今天有时间,把具体的细节实现了,如下:   /** * Description: 把输入的阿拉巴数字转换...

将数字转换成中文金额的大写形式

package com.unteck.fms.web.businessdata.controller; import org.springframework.beans.factory.anno...

自己写的一个转换数字为中文大写形式的工具类

UpperNumTool.java import java.math.BigInteger; import java.util.regex.Matcher; import java.util.rege...

用Python将数字转换为中文大写

利用Python将阿拉伯数字转化为中文大写,其实最麻烦的地方就是中间空多个0的问题,这种情况下,采用拆分法则,将一个大数字,先拆分成整数部分和小数部分,再对整数部分按照仟、万、亿、兆分位拆分为四个字符...
  • zzcwing
  • zzcwing
  • 2013年04月06日 04:26
  • 2795

java实现数字金额转换中文大写金额

直接贴代码吧!public class CnNumberUtils { private final static Logger logger = LoggerFactory.getLogger...

js怎么把数字金额转换中文大写金额

//数字金额转中文大写金额 function ConvertMoneyToChineseCapital(money) { var cnNums = new Array("零",...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数字转换为中文大写
举报原因:
原因补充:

(最多只允许输入30个字)