# -*- coding: utf-8 -*-
def Num2MoneyFormat( change_number ):
"""
.转换数字为大写货币格式( format_word.__len__() - 3 + 2位小数 )
change_number 支持 float, int, long, string
"""
format_word = ["分", "角", "元",
"拾","百","千","万",
"拾","百","千","亿",
"拾","百","千","万",
"拾","百","千","兆"]
format_num = ["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"]
if type( change_number ) == str:
# - 如果是字符串,先尝试转换成float或int.
if '.' in change_number:
try: change_number = float( change_number )
except: raise ValueError, '%s can\'t change'%change_number
else:
try: change_number = int( change_number )
except: raise ValueError, '%s can\'t change'%change_number
if type( change_number ) == float:
real_numbers = []
for i in range( len( format_word ) - 3, -3, -1 ):
if change_number >= 10 ** i or i < 1:
real_numbers.append( int( round( change_number/( 10**i ), 2)%10 ) )
elif isinstance( change_number, (int, long) ):
real_numbers = [ int( i ) for i in str( change_number ) + '' ]
else:
raise ValueError, '%s can\'t change'%change_number
zflag = 0 #标记连续0次数,以删除万字,或适时插入零字
start = len(real_numbers) - 3
change_words = []
for i in range(start, -3, -1): #使i对应实际位数,负数为角分
if 0 <> real_numbers[start-i] or len(change_words) == 0:
if zflag:
change_words.append(format_num[0])
zflag = 0
change_words.append( format_num[ real_numbers[ start - i ] ] )
change_words.append(format_word[i+2])
elif 0 == i or (0 == i%4 and zflag < 3): #控制 万/元
change_words.append(format_word[i+2])
zflag = 0
else:
zflag += 1
if change_words[-1] not in ( format_word[0], format_word[1]):
# - 最后两位非"角,分"则补"整"
change_words.append("整")
return ''.join(change_words)
print Num2MoneyFormat( 343.45 )

运行结果:叁百肆拾叁元肆角伍分

C&num;小写数字金额转换成大写人民币金额的算法

C#小写数字金额转换成大写人民币金额的算法 第一种方法: using System.Text.RegularExpressions;//首先引入命名空间 private string DaXie(st ...

SQL函数:小写金额转换成大写

/********************************************************作者:版本:1.0创建时间:20020227修改时间:功能:小写金额转换成大写参数:n ...

ABAP 金额转换成大写

FUNCTION zzfi_change_amount.*"---------------------------------------------------------------- ...

irport报表,把数字金额转换成大写人民币金额

1.编写oracle函数 CREATE OR REPLACE Function MoneyToChinese(Money In Number) Return Varchar2 Is strYuan ) ...

jquery 金额转换成大写

JavaScript将小写金额转换成大写

//num为小写金额,单位元 changeMoney(num) { if(isNaN(num))return ""; var strPrefix=""; if( ...

JavaScript将输入的数字金额转换成对应的中文大写金额

// 将输入的数字金额转换成对应的中文大写金额 // idNumber输入的数字金额,idCHN输出的中文大写金额 function TransformNumberIntoCHN(idNumber, ...

【PHP】金额数字转换成大写形式

<?php /*将数字金额转成大写*/ function num_to_upper($num) { $d = array('零','壹','贰','叁','肆','伍','陆','柒','捌', ...

PHP算法--将数字金额转换成大写金额

最近在看一些PHP算法题,遇到一个将数字金额转换成大写金额的小算法题,这里贴出自己的一个例子. 注:这个小算法适用于10万以内的金额. <?php //$num = 12345.67; func ...

随机推荐

获取Windows操作系统的CPU使用率以及内存使用率

此功能参考了ProcessHacker项目的代码. 声明定义 typedef struct _UINT64_DELTA { ULONG64 Value; ULONG64 Delta; } UINT64 ...

MySQL提示&colon;The server quit without updating PID file问题的解决办法(转载)

MySQL提示:The server quit without updating PID file问题的解决办法 今天网站web页面提交内容到数据库,发现出错了,一直提交不了,数找了下原因,发现数据写 ...

C预处理和C库

#include #define MAN(x) "n"##x int main(void) { printf("%s",MAN( ...

Creating a SharePoint BCS &period;NET Connectivity Assembly to Crawl RSS Data in Visual Studio 2010

from:http://blog.tallan.com/2012/07/18/creating-a-sharepoint-bcs-net-assembly-connector-to-crawl-rss ...

hbase 新增节点

关于Hbase的集群管理 http://www.linuxidc.com/Linux/2012-07/65909.htm 1.如果只增加集群的存储量,建议增加Hadoop datanode节点. 方法 ...

Linux命令-wc

wc命令用于统计指定文本的行数.字数.字节数 格式:wc [参数] 文本 [root@localhost test]# wc test.txt test.txt [root@localhost tes ...

JavaScript操作DOM的那些坑

js在操作DOM中存在着许多跨浏览器方面的坑,本文花了我将近一周的时间整理,我将根据实例整理那些大大小小的“坑”. DOM的工作模式是:先加载文档的静态内容.再以动态方式对它们进行刷新,动态刷新不影响 ...

UVa 10129 &lpar;并查集 &plus; 欧拉路径&rpar; Play on Words

题意: 有n个由小写字母的单词,要求判断是否存在某种排列使得相邻的两个单词,前一个单词末字母与后一个单词首字母相同. 分析: 将单词的两个字母看做节点,则一个单词可以看做一条有向边.那么题中所求的排列 ...

Linux学习笔记2

1.系统引导配置文件  # vi /boot/grub/grub.conf   default=0   timeout=5   splashimage=(hd0,0)/grub/splash.xpm. ...

linq 的Distinct 扩展方法&period;

List classs = new List(); classs.Add(new miniclass() { token = &qu ...