ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 人民币大写金额的转换程序

人民币大写金额的转换程序

原创 Linux操作系统 作者:perltest 时间:2009-07-11 16:20:58 0 删除 编辑

#!/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 "",$';#小数部分
}
else
{
@int = split "",$money;
}

$len=@int+1;

for(@int)
{
if($_=="0")
{
if($digitarray[$len] eq "万" or $digitarray[$len] eq "元" )
{
$result=$result.$digitarray[$len--];
}
else
{
$result=$result."零";
$len--;
}
}
else
{
$result=$result.$numberhash{$_}.$digitarray[$len--];
}
}

for(@float)
{
$result=$result.$numberhash{$_}.$digitarray[$len--];
}

$result =~ s/零分/整/g; #零分
$result =~ s/零角整/整/g; #零角零分
$result =~ s/亿万/亿/g;

#以下是把一些特殊情况进行修正
for ($i = 1; $i <= 10; $i++)
{
$result =~ s/零万/万/g;
$result =~ s/零元/元/g;
$result =~ s/零零/零/g;
}

for ($money < 1)
{
 $result =~s/元//;
}

print $result."\n";

 

2009.8.24后记:

好久没看space空间,发现这个程序浏览过的人还不少。

说明一下,这个程序已经运行在我们医院的HIS管理软件中,目前没发现什么问题。

看留言,网友说感觉程序运行结果有问题。

只有感觉是不行的,如果发现大写金额有问题,请留言说明对于哪个数字的大写金额处理有问题。

我先说一下,在金额小于0.01元的情况下,这个程序结果是错的,不过这对我们医院没有影响,因为打发票不会出现这种情况。

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21129783/viewspace-608893/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2016-08-15

  • 博文量
    111
  • 访问量
    132263