现在有一金额¥2048,请写段程序将此金额转换成二千零四十八 如题:我想了下,自己也在研究下别人的代码。但是,那些都只是写了程序,没写出思路。看起来特吃力不知道哪位大牛也给写段,主要求思路~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://topic.csdn.net/u/20110525/09/c725b2b9-bf31-497c-add3-ca2220ec73dc.html?44081 我靠,你们都很喜欢逛BBS啊~~ 呵呵,早点休息吧。其实你的算法功夫是不错的。但是今天好像不在状态,哈哈。话说我不懂算法的,也就是将就套用一点编程用到的基本算法而已,而且有了 linq,似乎这些都用不到了。只能在论坛寻一点算法题锻炼下思维。 http://blog.csdn.net/CQBSBJIANXY/archive/2009/03/26/4025363.aspx笨笨简单 这个不行.效率太低了. 楼主有时间去我博客看看,前2天刚发布的class功能很强大 每次看到类似的帖子我都只想贴下面这一段代码public string GetMoney(double dd) { string s = dd.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A"); string d = Regex.Replace(s, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L\.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[\.]|$))))", "${b}${z}"); string value = Regex.Replace(d, ".", delegate(Match m) { return "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟萬億兆京垓秭穰"[m.Value[0] - '-'].ToString(); }); return value; } public class Num2Chinese { public function Num2Chinese() { } /**大写数字数组**/ private static var cnChar:Array = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']; /**金额单位数组**/ private static var partInt:Array = ['元','拾','佰','仟','万','拾','佰','仟','亿','拾','佰','仟','万']; /**金额的小数部分单位数组**/ private static var partDecimal:Array = ['角','分']; /** * * 数字转换为大写的中文 **/ public static function translate(num:Number, zeroFlag:Boolean=true):String{ /**不是数字返回“零元”**/ if(!num) { return zeroFlag ? '零元' : '元'; } /**是否是负数**/ var isPositive:Boolean = (num == Math.abs(num)); /**用小数点劈开,将整数和小数存储到数组中**/ var numPart:Array = (num+'').split('.'); /**是否有小数**/ var hasDecimal:Boolean = (numPart.length > 1); /**获得小数**/ var decimal:String = (hasDecimal ? numPart[1] : '0'); /**存储返回的大写**/ var cn:String = ''; /**如果是负数,在大写前面加上“负”字**/ if(!isPositive) { cn += '负'; } /******************************整数部分处理开始******************************************/ /**获得整数部分**/ num = Math.abs(numPart[0]); /**整数部分不能超过16位**/ if(String(num).length > 16) { return '超过最大位数'; } /**用空格‘’劈开整数,存储到数组中**/ var numArr:Array = num.toString().split(''); /***整数的位数,数组的长度***/ var l:Number = numArr.length; if(l%28 >= 14) { return '超过最大位数'; } /** * 循环处理 **/ for (var j:Number = 0 ; j < l ; j++) { /**获得数组中的数字**/ var c:Number = Number(numArr[j]); /**将数字转换为相应大写**/ cn += cnChar[c]; /**在大写数字后加上相应的单位**/ cn += partInt[l-j-1]; } /******************************整数部分处理结束******************************************/ /******************************小数部分处理开始******************************************/ /**如果有小数**/ if(hasDecimal){ /**获得小数的第一位,并且转换为大写**/ var cs:String = cnChar[decimal.substr(0,1)]; /**连接起来**/ cn += cs; /**加上单位“角”**/ cn += partDecimal[0]; /**如果小数位数超过1位**/ if(decimal.length>1){ /**获得小数的第二位**/ var ns:String = decimal.substr(1,1); /**转换为大写**/ cn += (ns ? cnChar[ns] : ''); /**加上单位“分”**/ cn += (ns? partDecimal[1] : ''); } } /******************************小数部分处理结束******************************************/ /******************************替换无用处理开始******************************************/ cn = cn.replace('零零', '零'); cn = cn.replace('零亿|亿万', '亿'); cn = cn.replace(/零万/g, '万'); cn = cn.replace(/零仟|零佰|零拾/g, ''); cn = ((num==0 && numPart[1]=='00') || numPart[0] == '0') ? cn.replace(/零元/g, '零元') : cn.replace(/零元/g, '元'); cn = cn.replace(/零角|零分/g, ''); cn = cn.replace('负元', '负'); var end:String = cn.substr((cn.length-1),1); cn =(end == '元' || end == '角') ? cn+'整' : cn; /******************************替换无用处理结束******************************************/ return cn; } } winform DataTable数据导入excel sql无法更新数据库 弹出错误窗口!! DevExpress控件组中的GridControl控件不能使横向滚动条有效,请问这是为什么? 为什么我的.net 2003不能判别C#关键字了? [在线等]怎么获取“我的电脑”下的目录? 请大家推荐几本C#方面的英文书(影印版就好了)原版太贵,内容高级一点的,入门的免(谢谢)。 ado.net问题 Windows窗体添加数据时,如何对控件进行验证? 请问这和struct有什么关系呢? 如何才能学好c C#怎么样把字符串"love中国"编码后显示成"love%u4E2D%u56FD"
只能在论坛寻一点算法题锻炼下思维。
笨笨简单
这个不行.效率太低了. 楼主有时间去我博客看看,前2天刚发布的class功能很强大
{
string s = dd.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A");
string d = Regex.Replace(s, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L\.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[\.]|$))))", "${b}${z}");
string value = Regex.Replace(d, ".", delegate(Match m)
{ return "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟萬億兆京垓秭穰"[m.Value[0] - '-'].ToString(); });
return value;
}
{
public function Num2Chinese()
{
}
/**大写数字数组**/
private static var cnChar:Array = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];
/**金额单位数组**/
private static var partInt:Array = ['元','拾','佰','仟','万','拾','佰','仟','亿','拾','佰','仟','万'];
/**金额的小数部分单位数组**/
private static var partDecimal:Array = ['角','分'];
/**
*
* 数字转换为大写的中文
**/
public static function translate(num:Number, zeroFlag:Boolean=true):String{
/**不是数字返回“零元”**/
if(!num)
{
return zeroFlag ? '零元' : '元';
}
/**是否是负数**/
var isPositive:Boolean = (num == Math.abs(num));
/**用小数点劈开,将整数和小数存储到数组中**/
var numPart:Array = (num+'').split('.');
/**是否有小数**/
var hasDecimal:Boolean = (numPart.length > 1);
/**获得小数**/
var decimal:String = (hasDecimal ? numPart[1] : '0');
/**存储返回的大写**/
var cn:String = '';
/**如果是负数,在大写前面加上“负”字**/
if(!isPositive)
{
cn += '负';
}
/******************************整数部分处理开始******************************************/
/**获得整数部分**/
num = Math.abs(numPart[0]);
/**整数部分不能超过16位**/
if(String(num).length > 16)
{
return '超过最大位数';
}
/**用空格‘’劈开整数,存储到数组中**/
var numArr:Array = num.toString().split('');
/***整数的位数,数组的长度***/
var l:Number = numArr.length;
if(l%28 >= 14)
{
return '超过最大位数';
}
/**
* 循环处理
**/
for (var j:Number = 0 ; j < l ; j++)
{
/**获得数组中的数字**/
var c:Number = Number(numArr[j]);
/**将数字转换为相应大写**/
cn += cnChar[c];
/**在大写数字后加上相应的单位**/
cn += partInt[l-j-1];
}
/******************************整数部分处理结束******************************************/
/******************************小数部分处理开始******************************************/
/**如果有小数**/
if(hasDecimal){
/**获得小数的第一位,并且转换为大写**/
var cs:String = cnChar[decimal.substr(0,1)];
/**连接起来**/
cn += cs;
/**加上单位“角”**/
cn += partDecimal[0];
/**如果小数位数超过1位**/
if(decimal.length>1){
/**获得小数的第二位**/
var ns:String = decimal.substr(1,1);
/**转换为大写**/
cn += (ns ? cnChar[ns] : '');
/**加上单位“分”**/
cn += (ns? partDecimal[1] : '');
}
}
/******************************小数部分处理结束******************************************/ /******************************替换无用处理开始******************************************/
cn = cn.replace('零零', '零');
cn = cn.replace('零亿|亿万', '亿');
cn = cn.replace(/零万/g, '万');
cn = cn.replace(/零仟|零佰|零拾/g, '');
cn = ((num==0 && numPart[1]=='00') || numPart[0] == '0') ? cn.replace(/零元/g, '零元') : cn.replace(/零元/g, '元');
cn = cn.replace(/零角|零分/g, '');
cn = cn.replace('负元', '负');
var end:String = cn.substr((cn.length-1),1);
cn =(end == '元' || end == '角') ? cn+'整' : cn;
/******************************替换无用处理结束******************************************/
return cn;
} }