⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 转人民币大写c++源代码_zip rmb_cpp.htm

📁 G:软件测试货币 mb_cpp.rar
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)http://read.pudn.com/downloads10/sourcecode/windows/38653/rmb.cpp__.htm -->
<HTML><HEAD><TITLE>转人民币大写C++源代码.zip rmb.cpp</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK 
href="转人民币大写C++源代码_zip rmb_cpp.files/read_style.css" type=text/css 
rel=stylesheet>
<META content="MSHTML 6.00.2900.3492" name=GENERATOR></HEAD>
<BODY>
<P><A href="http://www.pudn.com/">http://www.pudn.com/</A> &gt; <A 
href="http://www.pudn.com/downloads10/sourcecode/windows/detail38653.html">转人民币大写C++源代码.zip</A> 
&gt; rmb.cpp</P><!-- saved from http://www.pudn.com -->
<SCRIPT src="转人民币大写C++源代码_zip rmb_cpp.files/gg_read1.js"></SCRIPT>
<BR><PRE class=cpp name="code"> 
#include <VCL.H>        // must define AnsiString before rmb.h 
#pragma hdrstop         // only for C++ Builder 
 
#include <MATH.H> 
#include "rmb.h" 
 
//--------------------------------------------------------------------------- 
 
 
// 常量字符串定义,如修改也可变为转换普通汉字函数(如:一二三,十百千,元) 
const char *HanDigiStr[] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; 
 
const char *HanDiviStr[] = { "","拾","佰","仟","万","拾","佰","仟","亿", 
				"拾","佰","仟","万","拾","佰","仟","亿", 
				"拾","佰","仟","万","拾","佰","仟" }; 
const char *RMBUnit = "圆"; 
 
AnsiString PositiveIntegerToHanStr(const AnsiString &amp;NumStr)	 
{					// 输入字符串必须正整数,只允许前导空格(必须右对齐),不宜有前导零 
	AnsiString RMBStr; 
	int len,n,lastzero=0; 
	int hasvalue=0;			// 亿、万进位前有数值标记 
 
	len = NumStr.Length(); 
	if( len &gt; 24 ) return "数值过大!"; 
 
	for(int i=len-1;i&gt;=0;i--) { 
		if( NumStr[len-i]==' ' ) continue;      // AnsiString[] base is 1 
		n = NumStr[len-i] - '0'; 
		if( n&lt;0 || n&gt;9 ) return "输入含非数字字符!"; 
 
		if( n!=0 ) { 
			if( lastzero ) RMBStr += HanDigiStr[0];		// 若干零后若跟非零值,只显示一个零 
                                                                        // 除了亿万前的零不带到后面 
//			if( !( n==1 &amp;&amp; (i%4)==1 &amp;&amp; (lastzero || i==len-1) ) )   // 如十进位前有零也不发壹音用此行 
			if( !( n==1 &amp;&amp; (i%4)==1 &amp;&amp; i==len-1 ) )         // 十进位处于第一位不发壹音 
				RMBStr += HanDigiStr[n]; 
			RMBStr += HanDiviStr[i];			// 非零值后加进位,个位为空 
			hasvalue = 1;                                   // 置万进位前有值标记 
		 } 
		else { 
			if( (i%8)==0 || ((i%8)==4 &amp;&amp; hasvalue) ) 	// 亿万之间必须有非零值方显示万 
				RMBStr += HanDiviStr[i];		// “亿”或“万” 
		 } 
                if( i%8==0 ) hasvalue = 0;  			// 万进位前有值标记逢亿复位 
		lastzero = (n==0) &amp;&amp; (i%4!=0);                  // 亿万前有零后不加零,如:拾万贰仟 
	 } 
 
	if( RMBStr.Length()==0 ) return HanDigiStr[0];	        // 输入空字符或"0",返回"零" 
	return RMBStr; 
} 
 
AnsiString NumToRMBStr(double val) 
{ 
	AnsiString SignStr,TailStr; 
	double fraction, integer; 
	int jiao,fen; 
 
	if( val&lt;0 ) { 
		val = -val; 
		SignStr = "负"; 
	 } 
	fraction = modf(val+0.005, &amp;integer); 
 
	jiao = int(fraction*10); 
	fen = int(fraction*100)-jiao*10; 
	if( jiao==0 &amp;&amp; fen==0 ) { 
		TailStr = "整"; 
	 } 
	else { 
		TailStr = HanDigiStr[jiao]; 
		if( jiao!=0 ) 
			TailStr += "角"; 
		if( fen!=0 ) 
			TailStr += HanDigiStr[fen] + AnsiString("分"); 
	 } 
 
	return SignStr+PositiveIntegerToHanStr( AnsiString(integer) )+RMBUnit+TailStr;	// “圆” 
} 
 
//----------------------------------------------------------- 
 
// 基本考虑 
// 人民币大写单位应使用“圆” 
// 无零头金额后跟“整”,有则不跟 
// 角为零时不写角(如:零叁分) 
// 四舍五入到分 
// 
// 整数转换 
// 若干零后若跟非零值,只显示一个零,否则不显示 
// 万(亿)前有零后不加零,因亿、万为一完整单位, 
// (如:拾万贰仟 比 拾万零贰仟 更顺些) 
// 十进位处于第一位不发壹音(如“拾圆”非“壹拾圆”) 
// 十进位处前有零是否不发壹音不太确定? 
// 此处按发壹拾处理(用“叁仟零壹拾圆”不用“叁仟零拾圆”) 
// 亿为汉语计数最大单位,只要进位到总是显示(如:壹亿亿) 
// 万为次最大单位,亿万之间必须有非零值方显示万 
// (如“壹亿”不可显示为“壹亿万”) 
 
// 此函数为Borland C++ Builder编写,已充分考虑到跨平台兼容性 
// 如需转换到其它场合, 
// 只需修改字符串类型从AnsiString到对应的类型、功能及函数 
// (注意两个char*型字符串不可以直接相加,需有一个先转换) 
 
// public domain freeware by 王大庆 2003年3月 
// 此函数如有不妥之处请email: wang_daqing@21cn.com 
</PRE>
<SCRIPT src="转人民币大写C++源代码_zip rmb_cpp.files/gg_read2.js"></SCRIPT>
<BR>
<SCRIPT language=JavaScript src="转人民币大写C++源代码_zip rmb_cpp.files/stat.htm" 
charset=gb2312></SCRIPT>
</BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -