java實(shí)現(xiàn)浮點(diǎn)數(shù)轉(zhuǎn)人民幣的小例子
更新時(shí)間:2013年03月30日 09:39:09 作者:
java實(shí)現(xiàn)浮點(diǎn)數(shù)轉(zhuǎn)人民幣的小例子,需要的朋友可以參考一下
復(fù)制代碼 代碼如下:
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("負(fù)");
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));
}
}
相關(guān)文章
Java數(shù)據(jù)開發(fā)輔助工具Docker與普通程序使用方法
這是為數(shù)據(jù)開發(fā)人員使用的輔助工具,用于數(shù)據(jù)庫之間的表同步,說同步并不嚴(yán)謹(jǐn),因?yàn)椴皇菍?shí)時(shí)更新的,更確切的說法是復(fù)制,可以方便的從一個(gè)數(shù)據(jù)庫復(fù)制表到另一個(gè)數(shù)據(jù)庫,以下遇到同步的詞請(qǐng)理解為復(fù)制2021-09-09
spring?boot項(xiàng)目中集成rocketmq詳細(xì)步驟
這篇文章主要給大家介紹了關(guān)于spring?boot項(xiàng)目中集成rocketmq的相關(guān)資料,springboot集成rocketmq的方法非常簡(jiǎn)單,文中直接上代碼,需要的朋友可以參考下2023-09-09
Java虛擬機(jī)內(nèi)存結(jié)構(gòu)及編碼實(shí)戰(zhàn)分享
這篇文章主要介紹了Java虛擬機(jī)內(nèi)存結(jié)構(gòu)及編碼實(shí)戰(zhàn)分享,文章圍繞詳細(xì)主題展開相關(guān)資料具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-04-04
SpringBoot+Redis隊(duì)列實(shí)現(xiàn)Java版秒殺的示例代碼
本文主要介紹了SpringBoot+Redis隊(duì)列實(shí)現(xiàn)Java版秒殺的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
Java多線程編程之讀寫鎖ReadWriteLock用法實(shí)例
這篇文章主要介紹了Java多線程編程之讀寫鎖ReadWriteLock用法實(shí)例,本文直接給出編碼實(shí)例,需要的朋友可以參考下2015-05-05
java中List<對(duì)象>如何根據(jù)對(duì)象的一個(gè)屬性進(jìn)行去重
這篇文章主要給大家介紹了關(guān)于java中List<對(duì)象>如何根據(jù)對(duì)象的一個(gè)屬性進(jìn)行去重的相關(guān)資料,在開發(fā)中可能會(huì)遇到很多需要去重的情況,比如Person對(duì)象有name跟age兩個(gè)屬性,需要根據(jù)age進(jìn)行去重,需要的朋友可以參考下2023-08-08
Spring?Boot項(xiàng)目傳參校驗(yàn)的最佳實(shí)踐指南
有參數(shù)傳遞的地方都少不了參數(shù)校驗(yàn),在web開發(fā)中前端的參數(shù)校驗(yàn)是為了用戶體驗(yàn),后端的參數(shù)校驗(yàn)是為了安全,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot項(xiàng)目傳參校驗(yàn)的最佳實(shí)踐,需要的朋友可以參考下2022-04-04
Spring?Boot?快速使用?HikariCP?連接池配置詳解
Spring Boot 2.x 將其作為默認(rèn)的連接池組件,項(xiàng)目中添加 spring-boot-starter-jdbc 或 spring-boot-starter-data-jpa 模塊后,HikariCP 依賴會(huì)被自動(dòng)引入,這篇文章主要介紹了Spring?Boot使用HikariCP連接池配置詳解,需要的朋友可以參考下2023-06-06

