千亿级别数字的人民币读法
生活随笔
收集整理的這篇文章主要介紹了
千亿级别数字的人民币读法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
</pre><pre name="code" class="java">package com.sungeo;
/*** 人民幣的讀法是四位一節。 x仟x百x拾 x (億) x仟x百x拾 x (萬) x仟x百x拾 x * @author Administrator*/
public class NumToRmb {private String[] hanArr=new String[]{"零","壹","貳","叁","肆","伍","陸","柒","捌","玖"};private String[] unitArr=new String[]{"拾","百","仟"};private String[] wyArr=new String[]{"萬","億"};private static String[] xiaoArr=new String[]{"分","角","圓"};/*** @param args*/public static void main(String[] args) {NumToRmb toRMB=new NumToRmb();String[] arr=toRMB.divideDouble(12001234.12);//輸入數字,變成保留兩位小數的人民幣讀法,支持千億級別的人民幣讀法int len=checkLength(arr[0]);String readHan="";if(len<=4){readHan=toRMB.readZheng4(arr[0]);}else if(len<=8){readHan=toRMB.readZheng8(arr[0]);}else if(len<=12){readHan=toRMB.readZheng12(arr[0]);}else {System.out.println("僅僅支持千億級讀法!");}System.out.println(readHan+(readHan==""?"":xiaoArr[2])+toRMB.readXiao(arr[1]));}private static int checkLength(String str){return str.length();}/*** 長度小于等于12的整數讀法*/private String readZheng12(String numStr){String result="";String last8Str=numStr.substring(numStr.length()-8);String result8=readZheng8(last8Str);String first=numStr.substring(0, numStr.length()-8);String firstStr=readZheng4(first);result=firstStr+wyArr[1]+result8;return result;} /*** 長度小于等于8的整數讀法* @param numStr* @return*/private String readZheng8(String numStr){String result="";String last4Str=numStr.substring(numStr.length()-4);String result4=readZheng4(last4Str);String first=numStr.substring(0, numStr.length()-4);String firstStr=readZheng4(first);result=firstStr+wyArr[0]+result4;return result;}/***長度小于等于4的整數的讀法*/private String readZheng4(String numStr){String result="";for(int i=0;i<numStr.length();i++){int num=numStr.charAt(i)-48;//‘4’->4;if(num!=0&&i!=numStr.length()-1){result+=hanArr[num]+unitArr[numStr.length()-i-2];}else if(num==0){ //中間為0的不讀取}else {result+=hanArr[num];}}return result;}/*** 小數的讀法*/private String readXiao(String xiaoStr){String result="";for(int i=0;i<xiaoStr.length();i++){int num=xiaoStr.charAt(i)-48;//‘4’->4;if(num!=0 ){result+=hanArr[num]+xiaoArr[xiaoArr.length-i-2];}}return result;}/*** 將一個double數切割成小數和整數兩部分; 3.14d -> {"3","14"}* @param d 要切割的double 數* @return 整數和小數形成的字符串數組 */private String[] divideDouble(double d){if(d<=0){System.out.println("請輸入有效金額。");}String zheng=(long)d+"";String xiao=(long)Math.round((d%1*100))+"";return new String[]{zheng,xiao};}}
總結
以上是生活随笔為你收集整理的千亿级别数字的人民币读法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 两种方式实现js, ajax跨域
- 下一篇: Linux命令学习笔记之一目录与文件基本