程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java實現小寫金額轉成大寫算法

java實現小寫金額轉成大寫算法

編輯:關於JAVA

我用C++寫過一個,代碼不在身邊.

不過可以提示一下,將金額4位一分,比如1234567可以拆分為1234和567.另外,數字中間有零的話必須寫零,但要注重多個零的情況.具體的怎麼寫你可以問問做財務的人.

---------------------------------------------------------------

我以前寫過

說一下思路

先把數字分成整數小數

假如整數100909應該是十萬零九百零九

有數組

一個:零,一,二,三,四,五,六,七,八,九

一個:元,角,分,厘

一個:元,十,百,千,萬,十,百,千,億

然後依次去取就可以了

100909

上面會拼出

一十零零九百零九元

你碰到萬位補萬,兩個零變成一個

---------------------------------------------------------------

有個比較笨點的:

判定每個字符,然後條件if(c.equals("1")){.....}

依此類推。。。。

---------------------------------------------------------------

http://www.csdn.net/Develop/Read_Article.asp?Id=15823

---------------------------------------------------------------

從CSDN上整理出五個方案,請參考:

1、(java)

public static String numtochinese(String input){
String s1="零壹貳三肆伍陸柒捌玖";
String s4="分角整元拾佰仟萬拾佰仟億拾佰仟";
String temp="";
String result="";
if (input==null) return "輸入字串不是數字串只能包括以下字符(´0´~´9´,´.´),輸入字串最大只能精確到仟億,小數點只能兩位!";
temp=input.trim();
float f;
try{
f=Float.parseFloat(temp);
}catch(Exception e){return "輸入字串不是數字串只能包括以下字符(´0´~´9´,´.´),輸入字串最大只能精確到仟億,小數點只能兩位!";}
int len=0;
if (temp.indexOf(".")==-1) len=temp.length();
else len=temp.indexOf(".");
if(len>s4.length()-3) return("輸入字串最大只能精確到仟億,小數點只能兩位!");
int n1,n2=0;
String num="";
String unit="";
for(int i=0;i<temp.length();i++){
if(i>len+2){break;}
if(i==len) {continue;}
n1=Integer.parseInt(String.valueOf(temp.charAt(i)));
num=s1.substring(n1,n1+1);
n1=len-i+2;
unit=s4.substring(n1,n1+1);
result=result.concat(num).concat(unit);
}
if ((len==temp.length()) ¦ ¦(len==temp.length()-1)) result=result.concat("整");
if (len==temp.length()-2) result=result.concat("零分");
return result;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved