zoukankan      html  css  js  c++  java
  • java实现浮点数转人民币

    import java.util.ArrayList;
    import java.util.List;
    
    public class RMBConverter2 implements IRMBConverter {
    	
    	private static final String [] RMB_NUMBER ={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
    	
    	private static final String [] RMB_ATTR = {"元","十","佰","仟","万","十","百","仟","亿","十","佰","仟","万","十","佰","仟"};
    	
    	private static final String[] RMB_FEN = {"分","角"};
    	
    	
    	@Override
    	public String change2RMB(double counts) {
    		StringBuffer rsBuf = new StringBuffer();
    		
    		if (counts == 0L) {
    			return "零";
    		}
    		
    		if (counts < 0) 
    			rsBuf.append("负");
    		
    		String zheng = strConverse(String.valueOf((long)counts));
    		String xiao = strConverse(String.valueOf(Math.round((counts - (long)counts)*100)));
    		
    		char []	zhengArray = zheng.toCharArray();
    		char [] xiaoArray = xiao.toCharArray();
    		
    		int zLength = zhengArray.length;
    		int xLength = xiaoArray.length;
    		
    		List<String> zhengList = new ArrayList<String>();
    		
    		for(int i =0; i< zLength; i++) {
    			int value = Integer.parseInt(""+zhengArray[i]);
    			if (value == 0 && (i != 4) && (i != 8) && i != 0) {
    				zhengList.add(RMB_NUMBER[value]);
    			}else {
    				zhengList.add(RMB_NUMBER[value]+
    					 RMB_ATTR[i]);
    			}
    		}
    		
    		for(int i = zhengList.size()-1; i>=0; i--) {
    			rsBuf.append(zhengList.get(i));
    		}
    		
    		
    		for(int i =0; i<xLength ;i++) {
    			int value = Integer.parseInt(""+xiaoArray[i]);
    			if (value > 0 ) {
    				rsBuf.append(RMB_NUMBER[value])
    				 .append(RMB_FEN[xLength-i-1]);
    			}
    		}
    		
    		String rs = rsBuf.toString();
    		rs = rs.replaceAll("零+", "零");
    		rs = rs.replaceAll("零元", "元");
    		rs = rs.replaceAll("零万", "万");
    		rs = rs.replaceAll("零亿", "亿");
    		rs = rs.replaceAll("亿万", "亿");
    		return rs;
    	}
    	
    	
    	private String strConverse(String str) {
    		StringBuffer rs = new StringBuffer();
    		char []	strArray = str.toCharArray();
    		for(int i = str.length()-1; i>=0; i--) {
    			rs.append(strArray[i]);
    		}
    		return rs.toString();
    	}
    	
    	
    	public static void main(String args []) {
    		
    		RMBConverter2 c2 = new RMBConverter2();
    		System.out.println(c2.change2RMB(2001004.10));
    		System.out.println(c2.change2RMB(2000000.10));
    		System.out.println(c2.change2RMB(0L));
    		System.out.println(c2.change2RMB(1121000010000000L));
    	}
    
    }
    
  • 相关阅读:
    ASP.NET Core Docker部署
    Asp.Net Core 发布和部署(Linux + Jexus )
    Asp.Net Core 发布和部署( MacOS + Linux + Nginx )
    作为一个测试leader平时应该注意哪些方面
    【转】性能测试工具 性能测试如何做?
    【转】Grafana系列教程–Grafana基本概念
    jar包和war包的介绍和区别
    MySQL常用存储引擎
    【参】编程习惯
    【转】性能测试中如何定位性能瓶颈
  • 原文地址:https://www.cnblogs.com/treemanfm/p/2989919.html
Copyright © 2011-2022 走看看