posts - 9,  comments - 75,  trackbacks - 0

今天看到N多人Blog大写金额转换函数,我也来凑个热闹,顺便换个思路

using System;

namespace Excellent.Data
{
    
/// <summary>
    
/// 金额类
    
/// </summary>

    public sealed class Money
    
{
        
Variables

        
Properties

        
Constructors

        
Overrides 

        
Methods
    }

}

posted on 2005-03-30 13:13 Spring.Cheung 阅读(2700) 评论(15)  编辑 收藏

FeedBack:
2005-03-30 13:21 | Laser.NET      
http://www.cnblogs.com/Laser_Lu/archive/2005/03/30/128464.html
这个是我的,相互参考一下:)觉得你写的很简洁:)
  回复  引用  查看    
2005-03-30 13:32 | 葛优 [未注册用户]
最烦抢劫的了。 一点技术含量都没有。
  回复  引用    
2005-03-30 13:33 | 二十四画生      
的确比我的那个简单(http://www.cnblogs.com/esshs/archive/2005/03/30/128318.html),但是转成的大小形式不大符合读的规范。Laser.NET的不错。

  回复  引用  查看    
2005-03-30 13:34 | jhtchina      
简洁,些的不错。收藏学习
  回复  引用  查看    
#5楼 [楼主]
2005-03-30 13:40 | 西门子乌 [未注册用户]
谢谢,以前项目中需要转换,到网上没找到简洁的,就自己写了一个,这也是我的习惯,:P,就喜欢瞎改乱改人家的东东。
  回复  引用    
2005-03-30 15:49 | sky [未注册用户]
stResult += UPPER[stLower[i] - 48].ToString() + UNIT[j - i].ToString();
为什么要-48呀,什么原理!!期待ing
  回复  引用    
#7楼 [楼主]
2005-03-30 16:01 | 西门子乌 [未注册用户]
stLower[i]取出的是字符的ascii码,0的ascii码是48
  回复  引用    
2005-03-30 16:53 | Laser.NET      
我的电脑没有.net环境没有能够验证你的程序的正确性,
刚才有人把你的程序翻成了js版的,我试了一下那个程序好象有问题,
比如10000000001翻译好象不够正确(也或许是他的算法有问题):
http://www.cnblogs.com/laser_lu/archive/2005/03/30/128464.html#128669
  回复  引用  查看    
#9楼 [楼主]
2005-03-30 17:25 | 西门子乌 [未注册用户]
我看了一下,我的结果是对的,但是返回的结果不友好,:P
  回复  引用    
2005-03-30 17:38 | Na57      
今天我也读了不少了....
  回复  引用  查看    
2005-03-30 18:57 | 尉迟方      
//根据阿拉伯数字构造汉字数字读法,去年用C写输入法的时候顺便写的,思路:倒着转换(由低位到高位,然后去“零”,然后倒过来
void Num2HZNum(int index, LPTSTR str, LPCTSTR strNum)
{
TCHAR line[MAX_PHRASE_LEN] = _T("");
TCHAR chNums[2][10][2] =
{
{
_T("零"), _T("一"), _T("二"), _T("三"), _T("四")
, _T("五"), _T("六"), _T("七"), _T("八"), _T("九")
},
{
_T("零"), _T("壹"), _T("贰"), _T("叁"), _T("肆")
, _T("伍"), _T("陆"), _T("柒"), _T("捌"), _T("玖")
}
};

TCHAR hz[2][MAX_NUM2ZH_LEN][2] =
{
{
_T(""), _T("十"), _T("百"), _T("千"),
_T("万"), _T("十"), _T("百"), _T("千"),
_T("亿"), _T("十"), _T("百"), _T("千"),
_T("万"), _T("十")
},
{
_T(""), _T("拾"), _T("佰"), _T("仟"),
_T("万"), _T("拾"), _T("佰"), _T("仟"),
_T("亿"), _T("拾"), _T("佰"), _T("仟"),
_T("万"), _T("拾")
}
};

int i;
int pos = 0;
TCHAR temp[MAX_PHRASE_LEN];
for (i=_tcslen(strNum)-1; i>=0; i--)
{
temp[_tcslen(strNum)-1-i] = strNum[i];
}

*line = _T('\0');
for (i=0; i<(int)_tcslen(strNum); i++)
{
if (temp[i] != _T('0') || hz[index][i][0] == _T('万') || hz[index][i][0] == _T('亿'))
_tcscat(line, hz[index][i]);

if (temp[i] == _T('0')
&& (i == 0
|| temp[i-1] == _T('0')
|| line[_tcslen(line) - 1] == _T('万')
|| line[_tcslen(line) - 1] == _T('亿')
)
)
continue;

_tcscat(line, chNums[index][temp[i] - _T('0')]);
}

for (i=0; i<(int)_tcslen(line); i++)
{
str[i] = line[_tcslen(line) - 1 -i];
}
str[i] = _T('\0');
}
  回复  引用  查看    
2005-03-31 10:08 | 妖居      
这个简洁,但是好像返回的结果有点不太友好。互相借鉴代码挺好的,大家一起完善么。
  回复  引用  查看    
2005-03-31 18:53 | 尉迟方      
呵呵是啊

当时用c来写,不容易控制内存同级申请释放,所以在外部申请然后在外部释放

当时花了很多时间想“倒过来”这种方式,因为发现数字读的哪一位应该是读“万”还是“千”是由它的位置,而位置是从右向左算的。

当时还花了很多时间做年月日,就是类似于下面这种转换
200408-》二○○四年八月
20040701011-》二○○四年七月一日星期一

呵呵当时花了很多时间,后来又有无数的要求提出来,一个输入法要做拼音字型数字英文转中文甚至还有区位码,搞疯掉了,后来感觉这个客户的要求过于bt,项目中断

  回复  引用  查看    
2007-02-25 10:05 | 苗 [未注册用户]
我有中文金额转函数和英文金额转换函数,都是大型金额转换函数,
中文可到京,垓,秭,穰,沟,涧等
英文可到Binllion,Trillion,Quadrillion,Quintillion等
且都可以扩展到50多位,正确无误,长期在市场上应用,可靠稳定
qq:270461903

  回复  引用    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接:
 





姓名: 张春鹏
职业: .Net架构师
毕业于: 南京工业大学
目前居住于: 中国北京

版权声明:
本Blog内的所有文章如非特别注明,版权均归作者个人所有,任何外部引用或摘抄请注明原文地址,未经作者授权不得用于任何以营利目的的行为,谢谢合作!

<2005年3月>
272812345
6789101112
13141516171819
20212223242526
272829303112
3456789

与我联系

搜索

 

常用链接

留言簿(2)

我的标签

随笔档案

积分与排名

  • 积分 - 20668
  • 排名 - 1998

最新评论

  • 1. re: JQuery插件-级联选择(适用于TreeView)
  • 我选一个中间节点,则他的子和父亲节点都被选中,但是记录下来的值只有该节点和他的子节点,父亲节点值没有被记录。
    如果希望父亲节点也被记录到this.ID里,怎么办?
  • --liuys

阅读排行榜

评论排行榜