免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1471 | 回复: 3
打印 上一主题 下一主题

本人针对我们单位情况编写的金额大写转换程序(原创) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-10-24 10:24 |只看该作者 |倒序浏览
value=$1
upper0()
{
        v=$1
        tmp=$v
        t=`echo "$tmp/10" | bc`
        d=`echo "$tmp-$t*10" | bc`
        tmp=$t
        t=`echo "$tmp/10" | bc`
        c=`echo "$tmp-$t*10" | bc`
        tmp=$t
        t=`echo "$tmp/10" | bc`
        b=`echo "$tmp-$t*10" | bc`
        tmp=$t
        t=`echo "$tmp/10" | bc`
        a=`echo "$tmp-$t*10" | bc`
        if [ $a -eq 0 ]
          then
                  if [ $b -gt 0 -o $c -gt 0 -o $d -gt 0 ]
                     then
                             echo -n "零"
                  fi
        fi
}

upper1()
{
        para=$1
        case $para in
        1) echo -n "元壹角整" ;;
        2) echo -n "元贰角整" ;;
        3) echo -n "元叁角整" ;;
        4) echo -n "元肆角整" ;;
        5) echo -n "元伍角整" ;;
        6) echo -n "元陆角整" ;;
        7) echo -n "元柒角整" ;;
        echo -n "元捌角整" ;;
        9) echo -n "元玖角整" ;;
        esac
}

upper2()
{
        para=$1
        case $para in
        1) echo -n "元零壹分" ;;
        2) echo -n "元零贰分" ;;
        3) echo -n "元零叁分" ;;
        4) echo -n "元零肆分" ;;
        5) echo -n "元零伍分" ;;
        6) echo -n "元零陆分" ;;
        7) echo -n "元零柒分" ;;
        echo -n "元零捌分" ;;
        9) echo -n "元零玖分" ;;
        esac
}

upper3()
{
        para=$1
        case $para in
        1) echo -n "元壹角" ;;
        2) echo -n "元贰角" ;;
        3) echo -n "元叁角" ;;
        4) echo -n "元肆角" ;;
        5) echo -n "元伍角" ;;
        6) echo -n "元陆角" ;;
        7) echo -n "元柒角" ;;
        echo -n "元捌角" ;;
        9) echo -n "元玖角" ;;
        esac
}

upper4()
{
        para=$1
        case $para in
        1) echo -n "壹分" ;;
        2) echo -n "贰分" ;;
        3) echo -n "叁分" ;;
        4) echo -n "肆分" ;;
        5) echo -n "伍分" ;;
        6) echo -n "陆分" ;;
        7) echo -n "柒分" ;;
        echo -n "捌分" ;;
        9) echo -n "玖分" ;;
        esac
}

upper5()
{
        para=$1
        case $para in
        1) echo -n "壹" ;;
        2) echo -n "贰" ;;
        3) echo -n "叁" ;;
        4) echo -n "肆" ;;
        5) echo -n "伍" ;;
        6) echo -n "陆" ;;
        7) echo -n "柒" ;;
        echo -n "捌" ;;
        9) echo -n "玖" ;;
        esac
}

upper6()
{
        val=$1
        tmp=`echo "$val*100" | bc`
        t=`echo "$tmp/10" | bc`
        tmp=$t
        f=`echo "$val*100-$t*10" | bc`
        f=`echo "$f*10/10" | bc`
        t=`echo "$tmp/10" | bc`
        e=`echo "$tmp-$t*10" | bc`
        # e和f是小数后两位
        # 整数
        if [ $e -eq 0 -a $f -eq 0 ]
           then
                   echo -n "元整"
        fi
        if [ $e -eq 0 -a $f -gt 0 ]
           then
                    upper2 $f
        fi
        if [ $e -gt 0 -a $f -eq 0 ]
           then
                    upper1 $e
        fi
        if [ $e -gt 0 -a $f -gt 0 ]
           then
                    upper3 $e
                 upper4 $f
        fi
}

upper7()
{
        v=$1
        tmp=$v
        t=`echo "$tmp/10" | bc`
        d=`echo "$tmp-$t*10" | bc`
        tmp=$t
        t=`echo "$tmp/10" | bc`
        c=`echo "$tmp-$t*10" | bc`
        tmp=$t
        t=`echo "$tmp/10" | bc`
        b=`echo "$tmp-$t*10" | bc`
        tmp=$t
        t=`echo "$tmp/10" | bc`
        a=`echo "$tmp-$t*10" | bc`
        #分离

        # 1000
        if [ $a -gt 0 -a $b -eq 0 -a $c -eq 0 -a $d -eq 0 ]
           then
                   upper5 $a
                echo -n "仟"
        fi   

        # 1100
        if [ $a -gt 0 -a $b -gt 0 -a $c -eq 0 -a $d -eq 0 ]
           then
                   upper5 $a
                   echo -n "仟"
                   upper5 $b
                   echo -n "佰"
        fi

        # 1110
        if [ $a -gt 0 -a $b -gt 0 -a $c -gt 0 -a $d -eq 0 ]
           then
                   upper5 $a
                echo -n "仟"
                   upper5 $b
                   echo -n "佰"
                   upper5 $c
                   echo -n "拾"
        fi

        # 1111
        if [ $a -gt 0 -a $b -gt 0 -a $c -gt 0 -a $d -gt 0 ]
           then
                   upper5 $a
                   echo -n "仟"
                   upper5 $b
                   echo -n "佰"
                   upper5 $c
                   echo -n "拾"
                   upper5 $d
        fi

        # 0100
        if [ $a -eq 0 -a $b -gt 0 -a $c -eq 0 -a $d -eq 0 ]
           then
                   upper5 $b
                   echo -n "佰"
        fi

        # 0110
        if [ $a -eq 0 -a $b -gt 0 -a $c -gt 0 -a $d -eq 0 ]
           then
                   upper5 $b
                echo -n "佰"
                   upper5 $c
                   echo -n "拾"
        fi

        # 0111
        if [ $a -eq 0 -a $b -gt 0 -a $c -gt 0 -a $d -gt 0 ]
           then
                   upper5 $b
                   echo -n "佰"
                   upper5 $c
                   echo -n "拾"
                   upper5 $d
        fi

        # 0010
        if [ $a -eq 0 -a $b -eq 0 -a $c -gt 0 -a $d -eq 0 ]
           then
                   upper5 $c
                   echo -n "拾"
        fi

        # 0011
        if [ $a -eq 0 -a $b -eq 0 -a $c -gt 0 -a $d -gt 0 ]
           then
                   upper5 $c
                   echo -n "拾"
                   upper5 $d
        fi

        # 0001
        if [ $a -eq 0 -a $b -eq 0 -a $c -eq 0 -a $d -gt 0 ]
           then
                   upper5 $d
        fi

        # 1011
        if [ $a -gt 0 -a $b -eq 0 -a $c -gt 0 -a $d -gt 0 ]
           then
                   upper5 $a
                   echo -n "仟零"
                   upper5 $c
                   echo -n "拾"
                   upper5 $d
        fi

        # 1001
        if [ $a -gt 0 -a $b -eq 0 -a $c -eq 0 -a $d -gt 0 ]
           then
                   upper5 $a
                   echo -n "仟零"
                   upper5 $d
        fi

        # 0101
        if [ $a -eq 0 -a $b -gt 0 -a $c -eq 0 -a $d -gt 0 ]
           then
                   upper5 $b
                   echo -n "佰零"
                   upper5 $d
        fi

        # 1101
        if [ $a -gt 0 -a $b -gt 0 -a $c -eq 0 -a $d -gt 0 ]
           then
                   upper5 $a
                   echo -n "仟"
                   upper5 $b
                   echo -n "佰零"
                   upper5 $d
        fi

        # 1010
        if [ $a -gt 0 -a $b -eq 0 -a $c -gt 0 -a $d -eq 0 ]
           then
                   upper5 $a
                   echo -n "仟零"
                   upper5 $c
                   echo -n "拾"
        fi
}

# MAIN PROGRAM

if [ $value -gt 100000000 ]
then
        clear
           echo "arameter over field."
           exit
fi
if [ $value -lt 1 ]
then
           v1=`echo "$value*100/10" | bc`
           v2=`echo "($value*100-$v1*10)*100/100" | bc`
           if [ $v1 -eq 0 ]
           then
                      upper4 $v2
           else
                      upper5 $v1
                      echo -n "角"
                      upper4 $v2
           fi
else
        v2=`echo "$value/10000" | bc`
        v3=`echo "$value/1-$v2*10000" | bc`
        v1=`echo "$value-$v2*10000" | bc`
        if [ $value -eq 10000 ]
        then
                  echo -n "壹万元整"
        fi
        if [ $value -eq 100000000 ]
        then
                echo -n "壹亿元整"
        fi
        if [ $value -gt 10000 -a $value -lt 100000000 ]
        then
                  upper7 $v2
                echo -n "万"
                upper0 $v3
                upper7 $v3
                upper6 $v1
        fi
        if [ $value -lt 10000 -a $value -ge 1 ]
        then
                 upper7 $v3
                 upper6 $v1
        fi
fi
echo ""

论坛徽章:
0
2 [报告]
发表于 2003-10-24 10:57 |只看该作者

本人针对我们单位情况编写的金额大写转换程序(原创)

也算是一种方法。。。。
没有测试,100%准确吗?

论坛徽章:
0
3 [报告]
发表于 2003-10-24 11:11 |只看该作者

本人针对我们单位情况编写的金额大写转换程序(原创)

bash下调试的吧

输出结果不在一行上,呵呵

论坛徽章:
0
4 [报告]
发表于 2003-10-26 00:25 |只看该作者

本人针对我们单位情况编写的金额大写转换程序(原创)

太繁
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP