zoukankan      html  css  js  c++  java
  • 小写金额转换为大写金额

    前言

    在很多地方都有用到将小写金额转换为大写金额,就是将类似1234.56转换为壹仟贰佰叁拾肆圆伍角陆分。

    到底要怎样实现呢?其实只要仔细注意自己到底是怎么读的,细细揣摩一下。1 在千位:壹仟、2 在百位:贰佰......

    所以有两个过程:

    1.讲阿拉伯数字转换为大写数字。

    2.在各位后面加上诸如:万、仟、佰、拾、圆、分、角。这里需要注意,比如壹仟圆,百位、十位及个位都是 0,总不能说壹仟零佰零拾零圆吧?

      还有,比如多少万多少圆,这里圆、万、亿、兆,这几个的不能丢的。

    正文

    /// <summary>
    /// 小写金额转换为大写金额
    /// </summary>
    /// <param name="figures">小写金额</param>
    /// <returns>大写金额</returns>
    public string Figures2Words(decimal figures)
    {
    StringBuilder words
    = new StringBuilder();
    string cnNumber = "零壹贰叁肆伍陆柒捌玖";//大写
    string cnUnit = "分角圆拾佰仟万拾佰仟亿拾佰仟兆拾佰仟";//单位
    string temp = Math.Round(figures + (decimal)0.001, 2).ToString().Replace(".", string.Empty);//精确到 2 位小数,并去掉 . 号
    try
    {
    int length = temp.Length - 1;
    if (length > 0 && length < 18)//处理仟兆以内
    {
    int j = 0;
    int n = 0;
    for (int i = 0; i <= length; i++)
    {
    j
    = (int)temp[i] - 48;// 当前位转换为索引。0 在 ASCII中对应48,1 为 49,依次类推
    n = i + 1 >= length ? (int)temp[length] - 48 : (int)temp[i + 1] - 48;//高一位转换为索引
    if (j == 0)//当前位数字为 0
    {
    if (length - i == 2 || length - i == 6 || length - i == 10 || length - i == 14)//对应圆、万、亿、兆,(length - i - 2) % 4 == 0
    {
    words.Append(cnUnit[length
    - i]);
    }
    else
    {
    if (n != 0)
    {
    words.Append(cnNumber[j]);
    }
    }
    }
    else//当前位数字不为 0
    {
    words.Append(cnNumber[j]);
    //数字转换为大写
    words.Append(cnUnit[length - i]);//其后加上货币单位
    }
    }
    //words.Append("整");
    }
    else
    {
    words.Append(
    "溢出");
    }
    }
    catch
    {
    return string.Empty;
    }
    return words.ToString();
    }
  • 相关阅读:
    Java Set 常用集合 HashSet、LinkedHashSet、TreeSet
    旋转数组的最小数字
    Java List 常用集合 ArrayList、LinkedList、Vector
    RestfulApi 学习笔记——内容协商(三)
    RestfulApi 学习笔记——.net core入门操作(二)
    不一样的模板模式(设计模式十一)
    RestfulApi 学习笔记——简单介绍(一)
    oracle 数据库连接
    重学c#系列——索引器(九)
    重新整理计算机组成原理(一)
  • 原文地址:https://www.cnblogs.com/ainijiutian/p/1733717.html
Copyright © 2011-2022 走看看