医院门诊、住院打印发票时需要打印人民币大写金额。
HIS开始使用的大写转换程序是自己用Perl写的,算法很简单,没有大问题,就是个别情况下大写金额“不规范”,所谓的“不规范”其实就是下面程序中需要特殊处理的几种情况.
在网上查了一下,看看有没有很规范的大写金额转变程序,在CPAN上没有查到,不过在网上查到这个网页:
http://www.newmasterpieces.com/blog/?p=25
这个程序我试了一下,还是有点小问题,就是对于带小数的金额可以正确转变,对于只有整数的金额无法转换,可能是运行环境的原因.
所以我又修改了一下这个程序,在命令行下运行没有问题,源代码放在下面。再稍微改动一下,做成一个转换函数,就可以放在CGI程序里调用,目前医院的HIS已经在使用这个“规范”的大写金额转换程序:
(由于itpub博客的原因,程序中的反斜杠被过滤掉了,谁知道如何在itpub博客中显示反斜杠?请告诉我)
[@more@]#!/usr/bin/perl
my $money = ;
chomp $money;
my %numberhash=("0"=>"零","1"=>"壹","2"=>"贰","3"=>"叁","4"=>"肆", "5"=>"伍","6"=>"陆","7"=>"柒","8"=>"捌","9"=>"玖");
my @digitarray= ("分","角","元","拾","佰","仟","万","拾","百","仟","亿");
my $result="";
my @int;
my @float;
my $len;
my $i;
if($money=~/./)
{
@int=split "",$`;#整数部分
@float=split "",$
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21129783/viewspace-1023757/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/21129783/viewspace-1023757/