zoukankan      html  css  js  c++  java
  • 笔试中的编程题2

    把 数字金额 转换成  中文金额。 如: 23424.12 ----> 贰万叁仟肆佰贰拾肆圆壹角贰分. 郁闷...   转个过来(教训)。
    import java.math.BigDecimal;

    public class ChineseCurrency {
        
    // 中文金额单位数组
        String[] arrChineseUnit = { """""""""""""""""",
                
    """亿""""""" };
        
    // 中文数字字符数组
        String[] arrChineseNum = { """""""""""""""""""" };

        
    /**
         * Description 将数字金额转换为中文金额
         * 
         * 
    @param BigDecimal
         *            bigdMoneyNumber 转换前的数字金额
         * 
    @return String 调用:<br/>
         *         myToChineseCurrency("101.89")="壹佰零壹圆捌角玖分"
         *         myToChineseCurrency("100.89")="壹佰零捌角玖分"
         *         myToChineseCurrency("100")="壹佰圆整"
         
    */
        
    public String DoNumberCurrencyToChineseCurrency(BigDecimal moneyNumber) {
            String strChineseCurrency 
    = "";
            
    // 零数位标记
            boolean isZero = true;
            
    // 中文金额单位下标
            int chineseUnitIndex = 0;
            
    try {
                
    if (moneyNumber.intValue() == 0) {
                    
    return "零圆整";
                }
                
    // 处理小数部分,四舍五入
                double doubMoneyNumber = Math
                        .round(moneyNumber.doubleValue() 
    * 100);
                
    // 是否负数
                boolean bNegative = doubMoneyNumber < 0;
                
    // 取绝对值
                doubMoneyNumber = Math.abs(doubMoneyNumber);

                
    // 循环处理转换操作
                while (doubMoneyNumber > 0) {
                    
    // 整的处理(无小数位)
                    if (chineseUnitIndex == 2 && strChineseCurrency.length() == 0)
                        strChineseCurrency 
    = strChineseCurrency + "";

                    
    // 非零数位的处理
                    if (doubMoneyNumber % 10 > 0) {
                        strChineseCurrency 
    = arrChineseNum[(int) doubMoneyNumber % 10]
                                
    + arrChineseUnit[chineseUnitIndex]
                                
    + strChineseCurrency;
                        isZero 
    = false;
                    }
                    
    // 零数位的处理
                    else {
                        
    // 元的处理(个位)
                        if (chineseUnitIndex == 2) {
                            
    // 段中有数字
                            if (doubMoneyNumber > 0) {
                                strChineseCurrency 
    = arrChineseUnit[chineseUnitIndex]
                                        
    + strChineseCurrency;
                                isZero 
    = true;
                            }
                        }
                        
    // 万、亿数位的处理
                        else if (chineseUnitIndex == 6 || chineseUnitIndex == 10) {
                            
    // 段中有数字
                            if (doubMoneyNumber % 1000 > 0)
                                strChineseCurrency 
    = arrChineseUnit[chineseUnitIndex]
                                        
    + strChineseCurrency;
                        }
                        
    // 前一数位非零的处理
                        if (!isZero) {
                            strChineseCurrency 
    = arrChineseNum[0]
                                    
    + strChineseCurrency;
                        }
                        isZero 
    = true;
                    }
                    doubMoneyNumber 
    = Math.floor(doubMoneyNumber / 10);
                    chineseUnitIndex
    ++;
                }
                
    // 负数的处理
                if (bNegative)
                    strChineseCurrency 
    = "" + strChineseCurrency;
            } 
    catch (Exception e) {

            }
            
    return strChineseCurrency;
        }
    }
  • 相关阅读:
    使用Python的Mock库进行PySpark单元测试
    库龄报表的相关知识
    使用PlanViz进行ABAP CDS性能分析
    Spark SQL中列转行(UNPIVOT)的两种方法
    Spark中的一些概念
    使用Visual Studio Code进行ABAP开发
    2019年的几个目标
    Dom--样式操作
    Dom选择器--内容文本操作
    Javascript面向
  • 原文地址:https://www.cnblogs.com/oakpip/p/1989031.html
Copyright © 2011-2022 走看看