java分轉元
❶ java課程設計,模擬銀行存取業務,按照這個流程圖去做,其實最主要的是求畫圈的部分怎麼寫和它的方法。
請點擊輸入圖片描述
package com.greatwall.business.controller;
import java.math.BigDecimal;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author xysddjyt
* @since 2020/6/16 15:06
*/
public class BankTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 余額(單位:分)
Long BALANCE = 10000000L;
// 卡號
String card = "001";
// 密碼
String password = "123456";
String inputCard = new String();
String inputPassword = new String();
String quit = new String();
while (true) {
System.out.println(" 歡迎來到網上銀行辦理存取款業務!");
System.out.println("請輸入銀行卡號和銀行卡密碼進行登錄!");
while (true) {
System.out.print("請輸入銀行卡號(按q退出): ");
inputCard = scan.nextLine();
quit = inputCard;
if (inputCard.equals("q")) {
break;
}
if (!inputCard.equals(card)) {
System.out.print("您輸入銀行卡號不正確,請重新輸入 ");
continue;
}
break;
}
if (quit.equals("q")) {
continue;
}
while (true) {
System.out.print("請輸入銀行卡密碼(按q退出): ");
inputPassword = scan.nextLine();
quit = inputPassword;
if (inputPassword.equals("q")) {
break;
}
if (!inputPassword.equals(password)) {
System.out.print("您輸入銀行卡密碼不正確,請重新輸入 ");
continue;
}
break;
}
if (quit.equals("q")) {
continue;
}
System.out.print("登錄成功,當前登錄的賬戶名:" + inputCard);
String type = "4";
while (!type.equals("0")) {
System.out.print(" 您當前的余額為:" + money(BALANCE) + "元");
System.out.print(" 請選擇操作類型。(存款:1;取款:2 ;余額:3;退出:0) ");
type = scan.nextLine();
switch (type) {
case "1": {
System.out.print("請輸入您的存款金額(元):");
String chageNumber = scan.nextLine();
if (!isPositiveInteger(chageNumber)) {
System.out.print("請輸入正確的存款金額!");
continue;
}
BALANCE = Long.valueOf(chageNumber) * 100 + BALANCE;
continue;
}
case "2": {
System.out.print("請輸入您的取款金額(元):");
String chageNumber = scan.nextLine();
if (!isPositiveInteger(chageNumber)) {
System.out.print("請輸入正確取款金額!");
continue;
}
BALANCE = BALANCE - Long.valueOf(chageNumber) * 100;
continue;
}
case "3": {
System.out.print("您當前的余額為:" + money(BALANCE) + "元 ");
continue;
}
default: {
continue;
}
}
}
}
}
private static boolean isMatch(String regex, String orginal) {
if (orginal == null || orginal.trim().equals("")) {
return false;
}
Pattern pattern = Pattern.compile(regex);
Matcher isNum = pattern.matcher(orginal);
return isNum.matches();
}
// 判斷數據是否為正整數
public static boolean isPositiveInteger(String orginal) {
return isMatch("^\+{0,1}[1-9]\d*", orginal);
}
// 分轉元,轉換為bigDecimal在toString
public static String money(Long money) {
return BigDecimal.valueOf(money).divide(new BigDecimal(100)).toString();
}
}
❷ java 金額轉換
private static String chainNum[] = { "零", "壹", "貳", "叄", "肆", "伍", "陸",
"柒", "捌", "玖", "拾", "元", "角", "分", "佰", "仟", "萬", "億" };
private static String num2chainNum(String temp) {
String tmp = temp.toString();
String chainNum_ = "";
String _chainNum = "";
String[] p = tmp.split("\\.");
String decimalSection = null;
String num = p[0];
if (p.length > 1) {
decimalSection = p[1];
}
if (decimalSection != null) {
decimalSection = fill0(decimalSection, 2);
if (decimalSection.charAt(0) != '0') {
_chainNum = _chainNum
+ chainNum[Integer.valueOf(Character.valueOf(
decimalSection.charAt(0)).toString())] + "角";
}
if (decimalSection.charAt(1) != '0') {
_chainNum = _chainNum
+ chainNum[Integer.valueOf(Character.valueOf(
decimalSection.charAt(1)).toString())] + "分";
}
}
int start = 0;
if (num.length() > 8) {
start = 0;
if (num.length() > 12) {
start = num.length() - 12;
}
String yi = num.substring(start, num.length() - 8);
chainNum_ = chainNum_ + caseChain(yi) + "億";
}
if (num.length() > 4) {
start = 0;
if (num.length() > 8) {
start = num.length() - 8;
}
String wan = num.substring(start, num.length() - 4);
chainNum_ = chainNum_ + caseChain(wan) + "萬";
}
if (num.length() > 0) {
start = 0;
if (num.length() > 4) {
start = num.length() - 4;
}
String wu = num.substring(start, num.length());
chainNum_ = chainNum_ + caseChain(wu) + "元";
}
return chainNum_ + _chainNum + "整";
}
// 只能傳4位數
private static String caseChain(String tmp) {
tmp = fill0(tmp, 4);
String resultValue = "";
byte status[] = new byte[5];
for (int i = 0; i < status.length; i++) {
status[i] = 0;
}
if ('0' == tmp.charAt(0)) {
} else {
status[4] = -1;
resultValue = resultValue
+ chainNum[Integer.valueOf(Character.valueOf(tmp.charAt(0))
.toString())] + "仟";
}
if (tmp.charAt(1) == '0') {
if (status[4] == 0) {
} else {
if (tmp.charAt(2) != '0' || tmp.charAt(3) != '0')
resultValue = resultValue + "零";
}
} else {
status[3] = -1;
resultValue = resultValue
+ chainNum[Integer.valueOf(Character.valueOf(tmp.charAt(1))
.toString())] + "佰";
}
if (tmp.charAt(2) == '0') {
status[2] = 0;
if ((status[4] == 0 && status[3] == 0)
|| (status[4] != 0 && status[3] == 0)) {
} else {
if (tmp.charAt(2) != '0' || tmp.charAt(3) != '0')
resultValue = resultValue + "零";
}
} else {
resultValue = resultValue
+ chainNum[Integer.valueOf(Character.valueOf(tmp.charAt(2))
.toString())] + "拾";
}
if (tmp.charAt(3) != '0') {
resultValue = resultValue
+ chainNum[Integer.valueOf(Character.valueOf(tmp.charAt(3))
.toString())];
}
return resultValue;
}
private static String fill0(String tmp, int median) {
int len = tmp.length();
if (len < median) {
for (int i = 0; i < median - len; i++) {
tmp = "0" + tmp;
}
}
return tmp;
}
將上面代碼放到class裡面 然後調用
num2chainNum("11231.120")
❸ 在java中,傳給Java後台的有個與錢有關的一個參數是小數(元),但數據存儲的是整數(分),怎麼轉換存儲呢
在你入庫之前需要做一下處理,看看前台的單位是什麼,是否需要轉換,或是前台規定就只能輸入元,後台入庫之前*100
❹ 在java中怎樣把元轉成分
java中不可以通過強制轉換將true和false轉換成1和0 因為布爾類型與其他基本類型數據不可以互相轉換 可以用條件運算符 int a=(b==true)?1:0;//如果b為true則給a賦值1,如果為false則賦值0
❺ [JAVA]求一個將數字字元串轉換成人民幣讀法的方法();
上午也看到有人問這個,不知道和Lz是不是同一個人~
我直接復制好了,那邊的那個是我寫的,要是有漏洞還希望可以積極指出,我會盡快完善:
package com.ufotable.test;
import java.math.BigDecimal;
public class Test8 {
public enum RMB{
角,分,元,十,百,千,萬W,十萬,百萬,千萬,億Y,十億,百億,千億,萬W億,十萬億,百萬億,千萬億,兆Z,十兆,百兆,千兆,萬W兆,十萬兆,百萬兆,千萬兆,億Y兆
} public enum NUM{
零,壹,貳,叄,肆,伍,陸,柒,玐,玖
}
static String read(Integer rmb){
return read(rmb.toString());
}
static String read(double rmb){
return read(new BigDecimal(rmb).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
}
static String read(Long rmb){
return read(rmb.toString());
}
static String read(String rmb){
String str1=rmb.replaceAll("\\.\\d*", ""),
str2=rmb.replaceAll("[-]|\\d+\\.", ""),
str3="";
if(rmb.charAt(0)=='-'){str1=str1.substring(1);str3="負";}
int i = 0;
while(i<str1.length()){
int j = str1.length()-i+1;
int c=(str1.charAt(i++)-'0')%9;
str3+=NUM.values()[c].name()+
RMB.values()[j];
}
int j=0;
while(j<str2.length()&&j<2){
int c=(str2.charAt(j++)-'0')%9;
str3+=NUM.values()[c].name()+RMB.values()[j-1];
}
str3=str3.replaceAll("萬", "").replaceAll("億", "").replaceAll("兆", "").
replaceAll("零{1}[兆,億,萬,千,百,十,角]{1}", "零").
replaceAll("零+", "零").
replaceAll("W", "萬").
replaceAll("Y", "億").
replaceAll("Z", "兆").
replaceAll("零億", "億").
replaceAll("零萬", "萬").
replaceAll("零兆", "兆").
replaceAll("零元|元零", "元").
replaceAll("零分|元分", "元").
replaceAll("角元", "角");
return str3;
}
public static void main(String[] args) {
System.out.println(read(2411004444500203.405));
}
}
輸出結果:
貳千肆百壹十壹萬零肆十肆億肆千肆百伍十萬零貳百零叄元伍角
❻ Java 關於中文大寫金額與阿拉伯數字 互相轉換的問題(eclipse版)
package test.format;import java.text.NumberFormat;import java.util.HashMap;public class SimpleMoneyFormat {
public static final String EMPTY = "";public static final String ZERO = "零";public static final String ONE = "壹";public static final String TWO = "貳";public static final String THREE = "叄";public static final String FOUR = "肆"; public static final String FIVE = "伍";public static final String SIX = "陸";public static final String SEVEN = "柒"; public static final String EIGHT = "捌"; public static final String NINE = "玖"; public static final String TEN = "拾"; public static final String HUNDRED = "佰"; public static final String THOUSAND = "仟"; public static final String TEN_THOUSAND = "萬"; public static final String HUNDRED_MILLION = "億"; public static final String YUAN = "元"; public static final String JIAO = "角"; public static final String FEN = "分"; public static final String DOT = "."; private static SimpleMoneyFormat formatter = null;private HashMap chineseNumberMap = new HashMap(); private HashMap chineseMoneyPattern = new HashMap(); private NumberFormat numberFormat = NumberFormat.getInstance(); private SimpleMoneyFormat() { numberFormat.setMaximumFractionDigits(4); numberFormat.setMinimumFractionDigits(2); numberFormat.setGroupingUsed(false); chineseNumberMap.put("0", ZERO); chineseNumberMap.put("1", ONE); chineseNumberMap.put("2", TWO); chineseNumberMap.put("3", THREE); chineseNumberMap.put("4", FOUR); chineseNumberMap.put("5", FIVE); chineseNumberMap.put("6", SIX); chineseNumberMap.put("7", SEVEN); chineseNumberMap.put("8", EIGHT); chineseNumberMap.put("9", NINE); chineseNumberMap.put(DOT, DOT); chineseMoneyPattern.put("1", TEN); chineseMoneyPattern.put("2", HUNDRED); chineseMoneyPattern.put("3", THOUSAND); chineseMoneyPattern.put("4", TEN_THOUSAND); chineseMoneyPattern.put("5", TEN); chineseMoneyPattern.put("6", HUNDRED); chineseMoneyPattern.put("7", THOUSAND); chineseMoneyPattern.put("8", HUNDRED_MILLION); }
public static SimpleMoneyFormat getInstance() { if (formatter == null) formatter = new SimpleMoneyFormat(); return formatter; }
public String format(String moneyStr) { checkPrecision(moneyStr); String result; result = convertToChineseNumber(moneyStr); result = addUnitsToChineseMoneyString(result); return result; } public String format(double moneyDouble) { return format(numberFormat.format(moneyDouble)); } public String format(int moneyInt) { return format(numberFormat.format(moneyInt));
} public String format(long moneyLong) { return format(numberFormat.format(moneyLong)); }
public String format(Number moneyNum) { return format(numberFormat.format(moneyNum)); }
private String convertToChineseNumber(String moneyStr) { String result; StringBuffer cMoneyStringBuffer = new StringBuffer(); for (int i = 0; i < moneyStr.length(); i++) { cMoneyStringBuffer.append(chineseNumberMap.get(moneyStr.substring(i, i + 1))); }
//拾佰仟萬億等都是漢字裡面才有的單位,加上它們 int indexOfDot = cMoneyStringBuffer.indexOf(DOT); int moneyPatternCursor = 1; for (int i = indexOfDot - 1; i > 0; i--) { cMoneyStringBuffer.insert(i, chineseMoneyPattern.get(EMPTY + moneyPatternCursor)); moneyPatternCursor = moneyPatternCursor == 8 ? 1 : moneyPatternCursor + 1; } String fractionPart = cMoneyStringBuffer.substring(cMoneyStringBuffer.indexOf(".")); cMoneyStringBuffer.delete(cMoneyStringBuffer.indexOf("."), cMoneyStringBuffer.length()); while (cMoneyStringBuffer.indexOf("零拾") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零拾"), cMoneyStringBuffer.indexOf("零拾") + 2, ZERO);
} while (cMoneyStringBuffer.indexOf("零佰") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零佰"), cMoneyStringBuffer.indexOf("零佰") + 2, ZERO);
}while (cMoneyStringBuffer.indexOf("零仟") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零仟"), cMoneyStringBuffer.indexOf("零仟") + 2, ZERO);
}while (cMoneyStringBuffer.indexOf("零萬") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零萬"), cMoneyStringBuffer.indexOf("零萬") + 2, TEN_THOUSAND);
} while (cMoneyStringBuffer.indexOf("零億") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零億"), cMoneyStringBuffer.indexOf("零億") + 2, HUNDRED_MILLION); } while (cMoneyStringBuffer.indexOf("零零") != -1) {
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零零"), cMoneyStringBuffer.indexOf("零零") + 2, ZERO);
} if (cMoneyStringBuffer.lastIndexOf(ZERO) == cMoneyStringBuffer.length() - 1) cMoneyStringBuffer.delete(cMoneyStringBuffer.length() - 1, cMoneyStringBuffer.length()); cMoneyStringBuffer.append(fractionPart);
result = cMoneyStringBuffer.toString(); return result; }private String addUnitsToChineseMoneyString(String moneyStr) { String result; StringBuffer cMoneyStringBuffer = new StringBuffer(moneyStr); int indexOfDot = cMoneyStringBuffer.indexOf(DOT); cMoneyStringBuffer.replace(indexOfDot, indexOfDot + 1, YUAN); cMoneyStringBuffer.insert(cMoneyStringBuffer.length() - 1, JIAO); cMoneyStringBuffer.insert(cMoneyStringBuffer.length(), FEN); if (cMoneyStringBuffer.indexOf("零角零分") != -1)//沒有零頭,加整
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零角零分"), cMoneyStringBuffer.length(), "整"); else if (cMoneyStringBuffer.indexOf("零分") != -1)//沒有零分,加整 cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零分"), cMoneyStringBuffer.length(), "整");
else { if(cMoneyStringBuffer.indexOf("零角")!=-1)
cMoneyStringBuffer.delete(cMoneyStringBuffer.indexOf("零角"),cMoneyStringBuffer.indexOf("零角")+2);
tmpBuffer.append("整"); } result = cMoneyStringBuffer.toString(); return result; } private void checkPrecision(String moneyStr) {
int fractionDigits = moneyStr.length() - moneyStr.indexOf(DOT) - 1; if (fractionDigits > 2) throw new RuntimeException("金額" + moneyStr + "的小數位多於兩位。"); //精度不能比分低 }public static void main(String args[]) { System.out.println(getInstance().format(new Double(10010001.01))); }}
❼ 用java編譯金額的中文大寫轉換。
/**
* 金額小數轉換成中文大寫金額
* @author Neil Han
*
*/
public class ConvertMoneyToUppercase {
private static final String UNIT[] = { "萬", "千", "佰", "拾", "億", "千", "佰",
"拾", "萬", "千", "佰", "拾", "元", "角", "分" };
private static final String NUM[] = { "零", "壹", "貳", "叄", "肆", "伍", "陸",
"柒", "捌", "玖" };
private static final double MAX_VALUE = 9999999999999.99D;
/**
* 將金額小數轉換成中文大寫金額
* @param money
* @return result
*/
public static String convertMoney(double money) {
if (money < 0 || money > MAX_VALUE)
return "參數非法!";
long money1 = Math.round(money * 100); // 四捨五入到分
if (money1 == 0)
return "零元整";
String strMoney = String.valueOf(money1);
int numIndex = 0; // numIndex用於選擇金額數值
int unitIndex = UNIT.length - strMoney.length(); // unitIndex用於選擇金額單位
boolean isZero = false; // 用於判斷當前為是否為零
String result = "";
for (; numIndex < strMoney.length(); numIndex++, unitIndex++) {
char num = strMoney.charAt(numIndex);
if (num == '0') {
isZero = true;
if (UNIT[unitIndex] == "億" || UNIT[unitIndex] == "萬"
|| UNIT[unitIndex] == "元") { // 如果當前位是億、萬、元,且數值為零
result = result + UNIT[unitIndex]; //補單位億、萬、元
isZero = false;
}
}else {
if (isZero) {
result = result + "零";
isZero = false;
}
result = result + NUM[Integer.parseInt(String.valueOf(num))] + UNIT[unitIndex];
}
}
//不是角分結尾就加"整"字
if (!result.endsWith("角")&&!result.endsWith("分")) {
result = result + "整";
}
//例如沒有這行代碼,數值"400000001101.2",輸出就是"肆千億萬壹千壹佰零壹元貳角"
result = result.replaceAll("億萬", "億");
return result;
}
public static void main(String[] args) {
double value = Double.parseDouble("40330701101.2");
System.out.println("您輸入的金額(小寫)為:" + value);
System.out.println("您輸入的金額(大寫)為:" + convertMoney(value));
}
}
❽ 如何用Java編程實現人民幣大小寫轉換
public String GetBigMoney(double eSender)
{
double NewMoney;
int Index, len, flag;
String StrTemp = null;
char[] p;
String Number[]={"零","壹","貳","叄","肆","伍","陸","柒","捌","玖"};
String MonetaryUnit[] = {"萬","仟","佰","拾","億","仟","佰","拾","萬","仟","佰","拾","元","角","分"} ;
NewMoney = Math.abs(eSender);
System.out.println(NewMoney);
DecimalFormat deciformat;
deciformat=(DecimalFormat)DecimalFormat.getInstance();
deciformat.applyPattern("#######");
String m = java.lang.String.valueOf(deciformat.format(NewMoney * 100));
int i;
if((i = m.indexOf('.')) != -1)
m = m.substring(0, i);
p = new char[m.length()];
//p = new char[40];
m.getChars(0, m.length(), p, 0);
//len=m.length();
if (NewMoney > 100000000000.00) {
StrTemp = ""; // FloatAsComma( NewMoney, False );
return StrTemp;
}
if (NewMoney < 0.01) {
StrTemp = "零";
return StrTemp;
}
if (eSender<0) {
StrTemp = "負";
}
else {
StrTemp = "";
}
flag = 1;
len =p.length;
System.out.println("1111");
System.out.println(len);
for (Index=(15-len);Index<15;Index++)
{
if (p[Index - 15 + len]!='0')
{
StrTemp = StrTemp + Number[Integer.parseInt(String.valueOf(p[Index-15+len]))];
StrTemp = StrTemp + MonetaryUnit[Index];
}
else
{
if (Index == 5)
{
if ((p[Index - 14 + len]!= '0') || (p[Index-13+len] != '0'))
{
StrTemp = StrTemp + MonetaryUnit[Index + 3];
flag = 0;
}
}
else
{
if ((Index == 12) ||( (Index == 8) && (flag ==1)) || (Index == 4))
{
StrTemp = StrTemp + MonetaryUnit[Index];
}
if ((p[Index-15 + len] != '0') && (Index != 14))
{
StrTemp = StrTemp +Number[Integer.parseInt(String.valueOf(p[Index-15+len]))];
;
}
}
}
}
if (p[m.length()-1] == '0')
{
StrTemp = StrTemp + "整";
}
return StrTemp;
}
❾ Java中,怎麼將一段浮點數值轉換成人民幣格式例如將12004567.866轉換成 :壹千貳百萬
直接通過以下介面類方法實現即可:importjava.math.BigDecimal;/***金額工具類**@authorzn**@Date2013-2-1*@[email protected]*/publicclassMoneyUtil{privatestaticfinalintDFT_SCALE=2;/**大寫數字*/privatestaticfinalString[]NUMBERS={"零","壹","貳","叄","肆","伍","陸","柒","捌","玖"};/**整數部分的單位*/privatestaticfinalString[]IUNIT={"元","拾","佰","仟","萬","拾","佰","仟","億","拾","佰","仟","萬","拾","佰","仟"};/**小數部分的單位*/privatestaticfinalString[]DUNIT={"角","分","厘"};/***得到大寫金額。*/publicstaticStringtoChinese(Stringstr){str=str.replaceAll(",","");//去掉","StringintegerStr;//整數部分數字StringdecimalStr;//小數部分數字//初始化:分離整數部分和小數部分if(str.indexOf(".")>0){integerStr=str.substring(0,str.indexOf("."));decimalStr=str.substring(str.indexOf(".")+1);}elseif(str.indexOf(".")==0){integerStr="";decimalStr=str.substring(1);}else{integerStr=str;decimalStr="";}//integerStr去掉首0,不必去掉decimalStr的尾0(超出部分捨去)if(!integerStr.equals("")){integerStr=Long.toString(Long.parseLong(integerStr));if(integerStr.equals("0")){integerStr="";}}//overflow超出處理能力,直接返回if(integerStr.length()>IUNIT.length){System.out.println(str+":超出處理能力");returnstr;}int[]integers=toArray(integerStr);//整數部分數字booleanisMust5=isMust5(integerStr);//設置萬單位int[]decimals=toArray(decimalStr);//小數部分數字returngetChineseInteger(integers,isMust5)+getChineseDecimal(decimals);}/***整數部分和小數部分轉換為數組,從高位至低位*/privatestaticint[]toArray(Stringnumber){int[]array=newint[number.length()];for(inti=0;i1&&integers[i+1]!=0)key+=NUMBERS[0];}chineseInteger.append(integers[i]==0?key:(NUMBERS[integers[i]]+IUNIT[length-i-1]));}returnchineseInteger.toString();}/***得到中文金額的小數部分。*/(int[]decimals){StringBufferchineseDecimal=newStringBuffer("");for(inti=0;i4){StringsubInteger="";if(length>8){//TODO12-9-17//取得從低位數,第5到第8位的字串subInteger=integerStr.substring(length-8,length-4);}else{subInteger=integerStr.substring(0,length-4);}returnInteger.parseInt(subInteger)>0;}else{returnfalse;}}/***BigDecimal相乘,四捨五入保留0位**@parama*@paramb*@returna*b*/publicstaticBigDecimalmutiply(Stringa,Stringb,introundingMode){BigDecimalbd=newBigDecimal(a);returnbd.multiply(newBigDecimal(b)).setScale(DFT_SCALE,roundingMode);}/***BigDecimal相除,四捨五入保留兩位**@parama*@paramb*@returna/b*/publicstaticBigDecimaldiv(Stringa,Stringb,introundingMode){BigDecimaldecimal1=newBigDecimal(a);BigDecimaldecimal2=newBigDecimal(b);returndecimal1.divide(decimal2,DFT_SCALE,roundingMode);}/***BigDecimal相加,四捨五入保留兩位**@parama*@paramb*@returna+b*/publicstaticBigDecimalsum(Stringa,Stringb,introundingMode){BigDecimaldecimal1=newBigDecimal(a);BigDecimaldecimal2=newBigDecimal(b);//DecimalFormatformat=newDecimalFormat("#0.00");returndecimal1.add(decimal2).setScale(DFT_SCALE,roundingMode);}/***BigDecimal相減,四捨五入保留兩位**@parama*@paramb*@returna+b*/publicstaticBigDecimalsub(Stringa,Stringb,introundingMode){BigDecimaldecimal1=newBigDecimal(a);BigDecimaldecimal2=newBigDecimal(b);//DecimalFormatformat=newDecimalFormat("#0.00");returndecimal1.subtract(decimal2).setScale(DFT_SCALE,roundingMode);}/***100.00為10000**@parama*@return*/publicstaticBigDecimalformat(Stringa,introundingMode){returnnewBigDecimal(a).multiply(newBigDecimal(100)).setScale(0,roundingMode);}publicstaticvoidmain(String[]args){Stringnumber="54452";System.out.println(number+""+MoneyUtil.toChinese(number));number="30200";System.out.println(number+""+MoneyUtil.toChinese(number));number="30000.05";System.out.println(number+""+MoneyUtil.toChinese(number));number="30000.00";System.out.println(number+""+MoneyUtil.toChinese(number));}}備註:最後面的main方法是具體的調用。
❿ JAVA將數字轉表示成相應的錢
public class ShuceUtils {
/**
* 將數字轉換成中文表示
* @param smallmoney double
* @return String
*/
public static String TranslateMoneyToChn(double smallmoney) {
String value = String.valueOf(smallmoney);
if (null == value || "".equals(value.trim()))
return "零";
String strCheck, strArr, strFen, strDW, strNum, strBig, strNow;
double d = 0;
try {
d = Double.parseDouble(value);
}
catch (Exception e) {
return "數據" + value + "非法!";
}
strCheck = value + ".";
int dot = strCheck.indexOf(".");
if (dot > 12) {
return "數據" + value + "過大,無法處理!";
}
try {
int i = 0;
strBig = "";
strDW = "";
strNum = "";
long intFen = Math.round(d * 100);
strFen = String.valueOf(intFen);
int lenIntFen = strFen.length();
while (lenIntFen != 0) {
i++;
switch (i) {
case 1:
strDW = "分";
break;
case 2:
strDW = "角";
break;
case 3:
strDW = "圓";
break;
case 4:
strDW = "拾";
break;
case 5:
strDW = "佰";
break;
case 6:
strDW = "仟";
break;
case 7:
strDW = "萬";
break;
case 8:
strDW = "拾";
break;
case 9:
strDW = "佰";
break;
case 10:
strDW = "仟";
break;
case 11:
strDW = "億";
break;
case 12:
strDW = "拾";
break;
case 13:
strDW = "佰";
break;
case 14:
strDW = "仟";
break;
}
switch (strFen.charAt(lenIntFen - 1)) { //選擇數字
case '1':
strNum = "壹";
break;
case '2':
strNum = "貳";
break;
case '3':
strNum = "叄";
break;
case '4':
strNum = "肆";
break;
case '5':
strNum = "伍";
break;
case '6':
strNum = "陸";
break;
case '7':
strNum = "柒";
break;
case '8':
strNum = "捌";
break;
case '9':
strNum = "玖";
break;
case '0':
strNum = "零";
break;
}
//處理特殊情況
strNow = strBig;
//分為零時的情況
if ( (i == 1) && (strFen.charAt(lenIntFen - 1) == '0'))
strBig = "整";
//角為零時的情況
else if ( (i == 2) && (strFen.charAt(lenIntFen - 1) == '0')) { //角分同時為零時的情況
if (!strBig.equals("整"))
strBig = "零" + strBig;
}
//元為零的情況
else if ( (i == 3) && (strFen.charAt(lenIntFen - 1) == '0'))
strBig = "圓" + strBig;
//拾-仟中一位為零且其前一位(元以上)不為零的情況時補零
else if ( (i < 7) && (i > 3) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) != '零') && (strNow.charAt(0) != '圓'))
strBig = "零" + strBig;
//拾-仟中一位為零且其前一位(元以上)也為零的情況時跨過
else if ( (i < 7) && (i > 3) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '零')) {}
//拾-仟中一位為零且其前一位是元且為零的情況時跨過
else if ( (i < 7) && (i > 3) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '圓')) {}
//當萬為零時必須補上萬字
else if ( (i == 7) && (strFen.charAt(lenIntFen - 1) == '0'))
strBig = "萬" + strBig;
//拾萬-仟萬中一位為零且其前一位(萬以上)不為零的情況時補零
else if ( (i < 11) && (i > 7) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) != '零') && (strNow.charAt(0) != '萬'))
strBig = "零" + strBig;
//拾萬-仟萬中一位為零且其前一位(萬以上)也為零的情況時跨過
else if ( (i < 11) && (i > 7) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '萬')) {}
//拾萬-仟萬中一位為零且其前一位為萬位且為零的情況時跨過
else if ( (i < 11) && (i > 7) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '零')) {}
//萬位為零且存在仟位和十萬以上時,在萬仟間補零
else if ( (i < 11) && (i > 8) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '萬') && (strNow.charAt(2) == '仟'))
strBig = strNum + strDW + "萬零" + strBig.substring(1, strBig.length());
//單獨處理億位
else if (i == 11) {
//億位為零且萬全為零存在仟位時,去掉萬補為零
if ( (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '萬') && (strNow.charAt(2) == '仟'))
strBig = "億" + "零" + strBig.substring(1, strBig.length());
//億位為零且萬全為零不存在仟位時,去掉萬
else if ( (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '萬') && (strNow.charAt(2) != '仟'))
strBig = "億" + strBig.substring(1, strBig.length());
//億位不為零且萬全為零存在仟位時,去掉萬補為零
else if ( (strNow.charAt(0) == '萬') && (strNow.charAt(2) == '仟'))
strBig = strNum + strDW + "零" + strBig.substring(1, strBig.length());
//億位不為零且萬全為零不存在仟位時,去掉萬
else if ( (strNow.charAt(0) == '萬') && (strNow.charAt(2) != '仟'))
strBig = strNum + strDW + strBig.substring(1, strBig.length());
//其他正常情況
else
strBig = strNum + strDW + strBig;
}
//拾億-仟億中一位為零且其前一位(億以上)不為零的情況時補零
else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) != '零') && (strNow.charAt(0) != '億'))
strBig = "零" + strBig;
//拾億-仟億中一位為零且其前一位(億以上)也為零的情況時跨過
else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '億')) {}
//拾億-仟億中一位為零且其前一位為億位且為零的情況時跨過
else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) == '0') &&
(strNow.charAt(0) == '零')) {}
//億位為零且不存在仟萬位和十億以上時去掉上次寫入的零
else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) != '0') &&
(strNow.charAt(0) == '零') && (strNow.charAt(1) == '億') &&
(strNow.charAt(3) != '仟'))
strBig = strNum + strDW + strBig.substring(1, strBig.length());
//億位為零且存在仟萬位和十億以上時,在億仟萬間補零
else if ( (i < 15) && (i > 11) && (strFen.charAt(lenIntFen - 1) != '0') &&
(strNow.charAt(0) == '零') && (strNow.charAt(1) == '億') &&
(strNow.charAt(3) == '仟'))
strBig = strNum + strDW + "億零" + strBig.substring(2, strBig.length());
else
strBig = strNum + strDW + strBig;
strFen = strFen.substring(0, lenIntFen - 1);
lenIntFen--;
}
return strBig;
}
catch (Exception e) {
return "";
}
}
public static void main(String[] args){
System.out.println(ShuceUtils.TranslateMoneyToChn(123450000));
}
}