java實現數字轉換人民幣中文大寫工具
業務場景:
1.在人事業務系統開發的報表列印文書時經常需要將人民幣數值轉換為大寫, 所以用java寫了一個通用的大寫轉換函式。 為了更加方便呼叫函式的引數使用字串型別。例如:825.45 轉換後:捌佰貳拾伍元肆角伍分
2.在人事業務系統中經常把日期用漢字大寫表示,為了方便呼叫函式,也是使用字串型別。例如:2018 轉換後:二〇一八
下面為java程式碼
public class Data2Zh {
final static private String NUMBER[] = { "零", "壹", "貳", "叄", "肆", "伍", "陸", "柒", "捌" , "玖" };
final static private String NUMBER2[] = { "〇", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
final static private String CBit[] = { "", "拾", "佰", "仟" };
/*
* 將數值大寫
*/
public static String capitalization(String szNum) {
StringBuilder resstr = new StringBuilder();
String tmpstr = szNum.trim();
int sl = tmpstr.length();
int sp = 0;
int dotpos = tmpstr.indexOf('.');
if (dotpos != -1) {
while (sl > 1 && tmpstr.charAt(sl - 1) == '0')
sl--;
if (tmpstr.charAt(sl - 1) == '.')
sl--;
if (sl != tmpstr.length()) {
tmpstr = tmpstr.substring(0 , sl);
}
} else
dotpos = sl;
if (sl < 1)
return NUMBER[0];
if (tmpstr.charAt(0) == '-') {
resstr.append("負");
sp = 1;
}
String integerNum = tmpstr.substring(sp, dotpos - sp);
String decimalNum = "";
if (dotpos + 1 < sl)
decimalNum = tmpstr.substring(dotpos + 1);
sl = integerNum.length();
sp = 0;
while (sp < sl && integerNum.charAt(sp) == '0')
sp++;
if (sp > 0)
integerNum = integerNum.substring(sp);
int inl = integerNum.length();
if (inl > 0) {
int h = (inl - 1) % 4;
int j = (inl - 1) / 4 + 1;
sp = 0;
boolean allzero = false;
boolean preallzero = false;
for (; j > 0; j--) {
int k = h;
h = 3;
boolean preiszero = allzero;
allzero = true;
for (; k >= 0; k--, sp++) {
if (integerNum.charAt(sp) == '0')
preiszero = true;
else {
allzero = false;
if (preiszero)
resstr.append("零");
preiszero = false;
resstr.append(NUMBER[(byte) (integerNum.charAt(sp)) - 48]).append(CBit[k]);
}
} // end for k
if (/* j!=0 && */ j % 2 == 0) {
if (!allzero)
resstr.append("萬");
} else {
if (!allzero || !preallzero) {
int repyi = j / 2;
for (int i = 0; i < repyi; i++)
resstr.append("億");
}
}
preallzero = allzero;
} // end for j
} else
resstr.append("零");
int dnl = decimalNum.length();
if (dnl > 0) {
resstr.append("點");
for (int i = 0; i < dnl; i++) {
resstr.append(NUMBER[(byte) (decimalNum.charAt(i)) - 48]);
}
}
return resstr.toString();
}
/*
* 獲得某一位上的數值,如果 nBit<0 則獲得小數點後面的位數
*/
static public char getNumByte(String szNum, int nBit) {
int sl = szNum.length();
int nPos = 0;
while (nPos < sl && szNum.charAt(nPos) != '.')
nPos++;
if (nBit < 0)
nPos = nPos - nBit;
else
nPos = nPos - nBit - 1;
if (nPos < 0 || nPos >= sl)
return '0';
return szNum.charAt(nPos);
}
public static String rmbChange(String rmb) {
return capitalization((rmb.indexOf('.') >= 0 ? rmb.substring(0, rmb.indexOf('.')) : rmb)) + "元"
+ capitalization(String.valueOf(getNumByte(rmb, -1))) + "角"
+ capitalization(String.valueOf(getNumByte(rmb, -2))) + "分";
}
/*
* 僅僅是把 0~9 轉換為 "〇","一","二","三","四","五","六","七","八","九"
*/
public static String changeCN(String szNum) {
StringBuilder sb = new StringBuilder();
String str = szNum.trim();
int sl = str.length();
int sp = 0;
if (sl < 1)
return NUMBER2[0];
for (; sp < sl; sp++)
if (str.charAt(sp) >= '0' && str.charAt(sp) <= '9')
sb.append(NUMBER2[str.charAt(sp) - '0']);
else
sb.append(str.charAt(sp));
return sb.toString();
}
public static void main(String[] args) {
System.out.println(rmbChange("825.45"));
System.out.println(changeCN("2018"));
}
}
相關推薦
java實現數字轉換人民幣中文大寫工具
業務場景: 1.在人事業務系統開發的報表列印文書時經常需要將人民幣數值轉換為大寫, 所以用java寫了一個通用的大寫轉換函式。 為了更加方便呼叫函式的引數使用字串型別。例如:825.45 轉換後:捌佰貳拾伍元肆角伍分 2.在人事業務系統中經常把日期
Java中實現數字金額到中文大寫字元的轉換!!
最近用到了數值轉成大寫人民幣的功能,在網上找了一下只有C++版的,好容易找到一個java版的竟然收費!!沒辦法就自己弄一個出來,想必用到該功能的人肯定少,就拿出來與大家共享!! /** * <p>Title: money</p> * <p&g
Java實現阿拉伯數字轉換成中文大寫數字,以及中文大寫數字到阿拉伯數字的轉換。
學習王曉華老師的《演算法的樂趣》一書中第四章之後,用Java重寫並實現這一功能。 該文章是在學習完該章之後的一個學習總結,以供自己複習使用。 由於現在剛開始學習Java,為了熟悉Java的變成規範,因此,用Java實現這一功能。 public class NumberToC
完成將 toChineseNum, 可以將數字轉換成中文大寫的表示,處理到萬級別,例如 toChineseNum(12345),返回 一萬二千三百四十五
turn nts math while log 處理 [0 floor rip const toChineseNum = (num) => { const unit = [‘‘, ‘十‘, ‘百‘, ‘千‘] const counts = [‘零
萬以內的數字轉換成中文大寫的方法
閒話:一個朋友是做財務的,有一天問我98745的中文大寫是什麼,我也不知道,但是目前好多手機的計算器是可以直接轉換的,所以自己無聊也想寫一段程式碼試試於是就有了今天的水文,但是我個人覺得不算是太水,還是有點點內容的,希望喜歡的朋友可以沒事看看,我也 是一個小白,今年剛大學畢業也才工作
阿拉伯數字轉換成中文大寫數字
function UpGB(InData:real):string; var a1,a2,a3,a4,a5,a6,a7:real; begin a1 := int(InData/10000); a2 := int((InData-a1*10000)/1000);
java 把數字轉換為中文讀法 例如:123->一百二十三
程式中是把 字串形式的數字 轉換 為中文讀法,需要轉換int型的話,可以先使用java.lang.String.valueOf(int i)轉為字串,不支援浮點數的轉換。 package com.dapeng.contest1; public class NumberTr
java實現數字金額轉換中文大寫金額
直接貼程式碼吧! public class CnNumberUtils { private final static Logger logger = LoggerFactory.getLogger(CnNumberUtils.class);
SSRS 實現數字金額轉換為中文大寫漢字
and pre lds 2.0 ber 部分 ima 中文 res 比如: 金額=49,701,120.00,將其轉換為“肆仟玖佰柒拾萬壹仟壹佰貳拾元整”;金額 289,546.52 ,轉換為 “貳拾捌萬玖仟伍佰肆拾陸元伍角貳分”。 解決方法:添加VB的轉換函數寫在CO
金額從數字轉換成中文漢字大寫的實現
以下簡單封裝的實現方法,詳細見註釋 class money2chinese { private $amount; // 金額 private $num2chinese; // 大寫數字 private $num_company; //
JS實現 阿拉伯數字金額轉換為中文大寫金額 可以處理負值
JS實現 阿拉伯數字金額轉換為中文大寫金額 可以處理負值 //************************* 把數字金額轉換成中文大寫數字的函式(可處理負值) *********************************// function changeNumMoneyToChinese(
sql將阿拉伯數字轉換為中文數字,MySQL數字轉大寫
CREATE FUNCTION `mathToChar`(`str` INT) RETURNS VARCHAR(100) character set gbk BEGIN DECLARE str1 VARCHAR(1) character set gbk DEFAULT '
Java實現數字大寫
轉自:http://blog.csdn.net/u011943172/article/details/51554457 /** * @author QSJ * @describe 金額大寫 * @date 2018-02-25 */ public class AmountOfmoney {
js 數字金額大小寫轉換成中文大寫
function Arabia_to_Chinese(Num) { for(i=Num.length-1;i>=0;i--) { Num = Num.replace(",","")//替換tomoney()中的“,” Num = Num.rep
php數字金額轉換成中文大寫顯示
整個功能其實不難,只是還算挺實用,所以記一下哈,其他程式語言轉換一下也是能可以的! 思路:把傳過來的金額轉換成整數和小數兩部分,再對其分別進行轉換處理 程式碼附上: function moneyToString($num) { $digits = ['零', '壹', '貳'
javascript實現將數字金額變成中文大寫金額
/* 功能:將貨幣數字(阿拉伯數字)(小寫)轉化成中文(大寫) 引數:Num為字元型,小數點之後保留兩位,例:Arabia_to_Chinese("1234.06") 說明:1.目前本轉換僅支援到 拾億(元) 位,金額單位為元,不能為萬元,最小單位為
Java金額轉換_阿拉伯數字轉換成中國大寫數字
這個題目我在網上看到有好多種做法,我自己也想出了一種做法 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /* * 思路: * 1
阿拉伯數字金額轉中文大寫 (python實現)
分析 分小數和整數部分進行處理 末尾的零應捨棄 中間有連續多個零,只取一個零 整數部分從右往左以4位為步長掃描 實現 # -*- coding: utf-8 -*- from __future
oracle改進之將阿拉伯數字轉換成中文數字
replace 工作 漢字 spa bsp func ace 延展 char 本博客是自己在學習和工作途中的積累與總結。 將阿拉伯數字轉換成中文漢字,方法自定義函數 create or replace function formate(val in num
(轉)php數字金額轉中文大寫金額
func 字符串 獲取字符串長度 依次 reac 字符串長度 單位 ever -- function floatohz($value){ $result=‘‘; $v_a=array(‘分‘,‘角‘,‘零‘,‘塊‘,‘十‘,‘,百‘,‘千‘,‘萬‘,‘十‘