How can Java convert a string of numbers into currency
Publish: 2021-04-21 17:25:52
1.
-
the cursor is in front of the number and the point is inserted
-
select the currency symbol, such as & #;, Then click the insert button
-
just add. 00 after the number

2. Ore (part of the world is nihilistic)
blood stone ore nevermine:oreBloodstone
Amethyst ore nevermine:oreAmethyst
sternal fragment nevermine:oreChestFragments
microcrystalline ore nevermine:oreCrystallite
emberite ore nevermine:oreEmberstone
foot bone fragments nevermine:oreFootFragments
jadeite ore nevermine:oreJade
never mine:oreLegFragments
sulfur copper antimony ore nevermine:oreRosite
limonite nevermine:oreLimonite
sapphire ore nevermine:oreSapphire
skull fragments nevermine:oreSkullFragments
mysterious ore nevermine:oreMystite
steel block nevermine:oreLyon
gloomy ore nevermine:oreGhastly
fear nevermine:oreGhoulish
magnesite stone nevermine:oreVarsium
titanium ore nevermine:oreElecanium
pyrite potassium ore nevermine:oreBaronyte
void ore nevermine:oreBlazium
electromagnetic uranium ore nevermine:oreChargedRunium
purple crystal ore nevermine:oreCrystalPurple
Blue crystal ore nevermine:oreCrystalBlue
green crystal ore nevermine:oreCrystalGreen
yellow water Crystal ore nevermine:oreCrystalYellow
Red crystal ore nevermine:oreCrystalRed
white crystal ore nevermine:oreCrystalWhite
axe
mining pick tool
skeleton pick nevermine:grounderSkeletal
Amethyst pick nevermine:AmethystPickaxe
brown iron pick nevermine:LimonitePickaxe
sulfur copper antimony pickaxe nevermine:RositePickaxe
nevermin e: Sapphire pickaxe
ember pick nevermine:EmberstonePickaxe
skeleton pick nevermine:SkeletalPickaxe
/veinminer blocklist pickaxe add nevermine:oreLimonite
blood stone ore nevermine:oreBloodstone
Amethyst ore nevermine:oreAmethyst
sternal fragment nevermine:oreChestFragments
microcrystalline ore nevermine:oreCrystallite
emberite ore nevermine:oreEmberstone
foot bone fragments nevermine:oreFootFragments
jadeite ore nevermine:oreJade
never mine:oreLegFragments
sulfur copper antimony ore nevermine:oreRosite
limonite nevermine:oreLimonite
sapphire ore nevermine:oreSapphire
skull fragments nevermine:oreSkullFragments
mysterious ore nevermine:oreMystite
steel block nevermine:oreLyon
gloomy ore nevermine:oreGhastly
fear nevermine:oreGhoulish
magnesite stone nevermine:oreVarsium
titanium ore nevermine:oreElecanium
pyrite potassium ore nevermine:oreBaronyte
void ore nevermine:oreBlazium
electromagnetic uranium ore nevermine:oreChargedRunium
purple crystal ore nevermine:oreCrystalPurple
Blue crystal ore nevermine:oreCrystalBlue
green crystal ore nevermine:oreCrystalGreen
yellow water Crystal ore nevermine:oreCrystalYellow
Red crystal ore nevermine:oreCrystalRed
white crystal ore nevermine:oreCrystalWhite
axe
mining pick tool
skeleton pick nevermine:grounderSkeletal
Amethyst pick nevermine:AmethystPickaxe
brown iron pick nevermine:LimonitePickaxe
sulfur copper antimony pickaxe nevermine:RositePickaxe
nevermin e: Sapphire pickaxe
ember pick nevermine:EmberstonePickaxe
skeleton pick nevermine:SkeletalPickaxe
/veinminer blocklist pickaxe add nevermine:oreLimonite
3. Bitcomputing power is a new business jointly established by 58coin exchange and miner manufacturers, mine pools and mine owners. Users can enjoy stable mining service by paying miner fees, electricity fees and management fees. Users can view it at any time in the background. The current business includes miner sales and custody, miner leasing and standard cloud computing power.
4. Hello
hold down the shift key and then press 4 keys
it's OK
there's nothing in word
it only represents personal opinions, don't spray if you don't like it, thank you.
hold down the shift key and then press 4 keys
it's OK
there's nothing in word
it only represents personal opinions, don't spray if you don't like it, thank you.
5. This is not true: number number = new number (system. In)
number is an abstract class and cannot be instantiated
also, there is no numberformat.full attribute
number is an abstract class and cannot be instantiated
also, there is no numberformat.full attribute
6. 直接通过以下接口类方法实现即可: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方法是具体的调用
7. public class ShuceUtils {
/**<
/****<<
* * 25259688x 3671716; 25444422and and 310344 /> * @param smallmoney double double
/> * @return String
/ */<
/> * public static String TranslateMoneyMoneyToChn(double smallmoney) {
String value = String.valueOf(smallmoney);< br /> if (zero == value [UNK] "& ". equals(value.trim()))
return " 零"< br />
String strCheck, strArr, strFen, strDW, strNum, strBig, strNow;< br /> double d = 0;< br /> try {
d = Double.parseDouble(value);< br /> }
catch (Exception e) {
return " 数据 value + " [UNK][UNK][UNK]"< br /> }
strCheck = value + ".& quot;;< br /> int dot = strCheck.indexOf(".& quot;);< br /> if (dot > 12) {
return " 数据 value + " 过[UNK][UNK]无[UNK][UNK][UNK]"< br /> }
try {
int i = 0;< br /> strBig = "& quot;;< br /> strDW = "& quot;;< br /> strNum = "& quot;;< br /> long intFen = Math.round(d * 100);< br /> strFen = String.valueOf(intFen);< br /> int lenIntFen = strFen.length();< br /> while (lenIntFen != 0) {
i++;< br /> switch (i) {
case 1:
strDW = " [UNK]"< br /> break;< br /> case 2:
strDW = " [UNK]"< br /> break;< br /> case 3:
strDW = " 圆 br /> break;< br /> case 4:
strDW = " 拾"< br /> break;< br /> case 5:
strDW = " 佰 br /> break;< br /> case 6:
strDW = " 仟 br /> break;< br /> case 7:
strDW = " 万 br /> break;< br /> case 8:
strDW = " 拾"< br /> break;< br /> case 9:
strDW = " 佰 br /> break;< br /> case 10:
strDW = " 仟 br /> break;< br /> case 11:
strDW = " 亿"< br /> break;< br /> case 12:
strDW = " 拾"< br /> break;< br /> case 13:
strDW = " 佰 br /> break;< br /> case 14:
strDW = " 仟 br /> break;< br /> }
switch (strFen.charAT(lenIntFen - 1)) { //选择数
case ' 1':< br /> strNum = " 壹 br /> break;< br /> / / ' 2':< br /> strNum = " 贰"< br /> break;< br /> / / ' 3':< br /> strNum = " 叁 br /> break;< br /> / / ' 4':< br /> strNum = " 肆 br /> break;< br /> / / ' 5':< br /> strNum = " 伍 br /> break;< br /> case ' 6':< br /> strNum = " 陆"< br /> break;< br /> / / ' 7':< br /> strNum = " 柒 br /> break;< br /> / / ' 8':< br /> strNum = " 捌 br /> break;< br /> / / ' 9':< br /> strNum = " 玖 br /> break;< br /> / / ' 0':< br /> strNum = " 零";< br /> break;< br /> }
//[UNK][UNK][UNK]殊[UNK]况
strNow = strBig;< br /> //[UNK][UNK] 零[UNK][UNK] 况
if ( (i == 1) && (strFen.charAt(lenIntFen - 1) == ' 0'))< br /> strBig = " 整 br /> //[UNK][UNK]零[UNK][UNK]况
else if ( (i == 2) & (strFen.charAt(lenIntFen - 1) == ' 0')) { // If (! strBig.equals(" 整"))< br /> strBig = " 零" + strBig;< br /> }
//元[UNK]零[UNK][UNK]况
else if ( (i == 3) & (strFen.charAt(lenIntFen - 1) == ' 0'))< br /> strBig = " 圆 strBig;< br /> / / / //拾-仟[UNK][UNK]位[UNK]零且[UNK][UNK][UNK]位元[UNK][UNK][UNK][UNK]零[UNK][UNK]况[UNK]补零
/ else if ( (i < 7) & (i > 3) & (strFen.charAt(lenIntFen - 1) == ' 0') &&< br /> (strNow.charAt(0) != 39? 零') & ( strNow.charAt(0) != 39? < br /> strBig = " 零" + strBig;< br /> / / //拾-仟[UNK][UNK]位[UNK]零且[UNK][UNK] 20301;元[UNK][UNK] 65289;⌫零[UNK]况[UNK]跨过
/ else if ( (i < 7) & (i > 3) & (strFen.charAt(lenIntFen - 1) == ' 0') &< br /> (strNow.charAt(0) == ' 零')) {}< br /> / / //拾-仟[UNK][UNK]位[UNK]零且[UNK][UNK][UNK]位[UNK]元且[UNK]零[UNK][UNK]况[UNK]跨过
else if ( (i < 7) & (i > 3) & (strFen.charAt(lenIntFen - 1) == ' 0') &< br /> (strNow.charAt(0) == ' 圆')) {}< br /> / / / [UNK]万[UNK]零[UNK]必须补[UNK]万[UNK]
else if ( (i == 7) & (strFen.charAt(lenIntFen - 1) == ' 0'))< br /> strBig = " 万 strBig;< br /> / / //拾万-仟万[UNK][UNK]位[UNK]零且[UNK][UNK][UNK]位万[UNK][UNK] 11) & (i > 7) & (strFen.charAt(lenIntFen - 1) == ' 0') &< br /> (strNow.charAt(0) != 39? 零') & ( strNow.charAt(0) != 39? 万'))< br /> strBig = " 零" + strBig;< br /> / / //拾万-仟万[UNK][UNK]位[UNK]零且[UNK][UNK][UNK]位万[UNK][UNK] 11) & (i > 7) & (strFen.charAt(lenIntFen - 1) == ' 0') &< br /> (strNow.charAt(0) == ' 万')) {}< br /> //拾万-仟万中一位为零且其前一位为万位且为零的情况时跨过
else if ( (i < 11) & (i > 7) & (strFen.charAt(lenIntFen - 1) == ' 0') &< br /> (strNow.charAt(0) == ' 零')) {}< br /> / //万位[UNK]零且存[UNK]仟位[UNK]十万[UNK][UNK][UNK]万仟[UNK]补零
else if ( (i < 11) & (i > 8) & (strFen.charAt(lenIntFen - 1) == ' 0') &< br /> (strNow.charAt(0) == ' 万') && ( strNow.charAt(2) == ' 仟'))< br /> strBig = strNum + strDW + " 万零" + strBig.substring(1, strBig.length());< br /> //
/**<
/****<<
* * 25259688x 3671716; 25444422and and 310344 /> * @param smallmoney double double
/> * @return String
/ */<
/> * public static String TranslateMoneyMoneyToChn(double smallmoney) {
String value = String.valueOf(smallmoney);< br /> if (zero == value [UNK] "& ". equals(value.trim()))
return " 零"< br />
String strCheck, strArr, strFen, strDW, strNum, strBig, strNow;< br /> double d = 0;< br /> try {
d = Double.parseDouble(value);< br /> }
catch (Exception e) {
return " 数据 value + " [UNK][UNK][UNK]"< br /> }
strCheck = value + ".& quot;;< br /> int dot = strCheck.indexOf(".& quot;);< br /> if (dot > 12) {
return " 数据 value + " 过[UNK][UNK]无[UNK][UNK][UNK]"< br /> }
try {
int i = 0;< br /> strBig = "& quot;;< br /> strDW = "& quot;;< br /> strNum = "& quot;;< br /> long intFen = Math.round(d * 100);< br /> strFen = String.valueOf(intFen);< br /> int lenIntFen = strFen.length();< br /> while (lenIntFen != 0) {
i++;< br /> switch (i) {
case 1:
strDW = " [UNK]"< br /> break;< br /> case 2:
strDW = " [UNK]"< br /> break;< br /> case 3:
strDW = " 圆 br /> break;< br /> case 4:
strDW = " 拾"< br /> break;< br /> case 5:
strDW = " 佰 br /> break;< br /> case 6:
strDW = " 仟 br /> break;< br /> case 7:
strDW = " 万 br /> break;< br /> case 8:
strDW = " 拾"< br /> break;< br /> case 9:
strDW = " 佰 br /> break;< br /> case 10:
strDW = " 仟 br /> break;< br /> case 11:
strDW = " 亿"< br /> break;< br /> case 12:
strDW = " 拾"< br /> break;< br /> case 13:
strDW = " 佰 br /> break;< br /> case 14:
strDW = " 仟 br /> break;< br /> }
switch (strFen.charAT(lenIntFen - 1)) { //选择数
case ' 1':< br /> strNum = " 壹 br /> break;< br /> / / ' 2':< br /> strNum = " 贰"< br /> break;< br /> / / ' 3':< br /> strNum = " 叁 br /> break;< br /> / / ' 4':< br /> strNum = " 肆 br /> break;< br /> / / ' 5':< br /> strNum = " 伍 br /> break;< br /> case ' 6':< br /> strNum = " 陆"< br /> break;< br /> / / ' 7':< br /> strNum = " 柒 br /> break;< br /> / / ' 8':< br /> strNum = " 捌 br /> break;< br /> / / ' 9':< br /> strNum = " 玖 br /> break;< br /> / / ' 0':< br /> strNum = " 零";< br /> break;< br /> }
//[UNK][UNK][UNK]殊[UNK]况
strNow = strBig;< br /> //[UNK][UNK] 零[UNK][UNK] 况
if ( (i == 1) && (strFen.charAt(lenIntFen - 1) == ' 0'))< br /> strBig = " 整 br /> //[UNK][UNK]零[UNK][UNK]况
else if ( (i == 2) & (strFen.charAt(lenIntFen - 1) == ' 0')) { // If (! strBig.equals(" 整"))< br /> strBig = " 零" + strBig;< br /> }
//元[UNK]零[UNK][UNK]况
else if ( (i == 3) & (strFen.charAt(lenIntFen - 1) == ' 0'))< br /> strBig = " 圆 strBig;< br /> / / / //拾-仟[UNK][UNK]位[UNK]零且[UNK][UNK][UNK]位元[UNK][UNK][UNK][UNK]零[UNK][UNK]况[UNK]补零
/ else if ( (i < 7) & (i > 3) & (strFen.charAt(lenIntFen - 1) == ' 0') &&< br /> (strNow.charAt(0) != 39? 零') & ( strNow.charAt(0) != 39? < br /> strBig = " 零" + strBig;< br /> / / //拾-仟[UNK][UNK]位[UNK]零且[UNK][UNK] 20301;元[UNK][UNK] 65289;⌫零[UNK]况[UNK]跨过
/ else if ( (i < 7) & (i > 3) & (strFen.charAt(lenIntFen - 1) == ' 0') &< br /> (strNow.charAt(0) == ' 零')) {}< br /> / / //拾-仟[UNK][UNK]位[UNK]零且[UNK][UNK][UNK]位[UNK]元且[UNK]零[UNK][UNK]况[UNK]跨过
else if ( (i < 7) & (i > 3) & (strFen.charAt(lenIntFen - 1) == ' 0') &< br /> (strNow.charAt(0) == ' 圆')) {}< br /> / / / [UNK]万[UNK]零[UNK]必须补[UNK]万[UNK]
else if ( (i == 7) & (strFen.charAt(lenIntFen - 1) == ' 0'))< br /> strBig = " 万 strBig;< br /> / / //拾万-仟万[UNK][UNK]位[UNK]零且[UNK][UNK][UNK]位万[UNK][UNK] 11) & (i > 7) & (strFen.charAt(lenIntFen - 1) == ' 0') &< br /> (strNow.charAt(0) != 39? 零') & ( strNow.charAt(0) != 39? 万'))< br /> strBig = " 零" + strBig;< br /> / / //拾万-仟万[UNK][UNK]位[UNK]零且[UNK][UNK][UNK]位万[UNK][UNK] 11) & (i > 7) & (strFen.charAt(lenIntFen - 1) == ' 0') &< br /> (strNow.charAt(0) == ' 万')) {}< br /> //拾万-仟万中一位为零且其前一位为万位且为零的情况时跨过
else if ( (i < 11) & (i > 7) & (strFen.charAt(lenIntFen - 1) == ' 0') &< br /> (strNow.charAt(0) == ' 零')) {}< br /> / //万位[UNK]零且存[UNK]仟位[UNK]十万[UNK][UNK][UNK]万仟[UNK]补零
else if ( (i < 11) & (i > 8) & (strFen.charAt(lenIntFen - 1) == ' 0') &< br /> (strNow.charAt(0) == ' 万') && ( strNow.charAt(2) == ' 仟'))< br /> strBig = strNum + strDW + " 万零" + strBig.substring(1, strBig.length());< br /> //
8.
如果表达小于2^31-1的正数代码如下:
public void binaryToDecimal(int n){
int t = 0; //用来记录位数
int bin = 0; //用来记录最后的二进制数
int r = 0; //用来存储余数
while(n != 0){
r = n % 2;
n = n / 2;
bin += r * Math().pow(10,t);
t++;
}
System.out.println(bin);
}
使用字符串的拼接+来实现大于2^31-1的数,代码如下:
public void binaryToDecimal(int n){
String str = "";
while(n!=0){
str = n%2+str;
n = n/2;
}
System.out.println(str);
}
可以右移后再与0x01进行&运算得到第一位的数字判断判断它的第几位上是0,第几位上是1,代码如下:
class ByteMove
{
public static void main(String[] args)
{
int i = 7;
move(i);
}
static void move(int num){
for(int i= 0;i<6;i++){
System.out.println("第"+(i+1)+"位:" + (num >> i & 0x01));
}
}
}

9. 直接通过以下接口类方法实现即可:
import java.math.BigDecimal;
/**
* 金额工具类
*
* @author zn
*
* @Date 2013-2-1
* @Email [email protected]
*/
public class MoneyUtil {
private static final int DFT_SCALE = 2;
/** 大写数字 */
private static final String[] NUMBERS = { "零", "壹", "贰", "叁", "肆", "伍",
"陆", "柒", "捌", "玖" };
/** 整数部分的单位 */
private static final String[] IUNIT = { "元", "拾", "佰", "仟", "万", "拾", "佰",
"仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟" };
/** 小数部分的单位 */
private static final String[] DUNIT = { "角", "分", "厘" };
/**
* 得到大写金额
*/
public static String toChinese(String str) {
str = str.replaceAll(",", "");// 去掉","
String integerStr;// 整数部分数字
String decimalStr;// 小数部分数字
// 初始化:分离整数部分和小数部分
if (str.indexOf(".") > 0) {
integerStr = str.substring(0, str.indexOf("."));
decimalStr = str.substring(str.indexOf(".") + 1);
} else if (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 + ":超出处理能力");
return str;
}
int[] integers = toArray(integerStr);// 整数部分数字
boolean isMust5 = isMust5(integerStr);// 设置万单位
int[] decimals = toArray(decimalStr);// 小数部分数字
return getChineseInteger(integers, isMust5)
+ getChineseDecimal(decimals);
}
/**
* 整数部分和小数部分转换为数组,从高位至低位
*/
private static int[] toArray(String number) {
int[] array = new int[number.length()];
for (int i = 0; i < number.length(); i++) {
array[i] = Integer.parseInt(number.substring(i, i + 1));
}
return array;
}
/**
* 得到中文金额的整数部分
*/
private static String getChineseInteger(int[] integers, boolean isMust5) {
StringBuffer chineseInteger = new StringBuffer("");
int length = integers.length;
for (int i = 0; i < length; i++) {
// 0出现在关键位置:1234(万)5678(亿)9012(万)3456(元)
// 特殊情况:10(拾元、壹拾元、壹拾万元、拾万元)
String key = "";
if (integers[i] == 0) {
if ((length - i) == 13)// 万(亿)(必填)
key = IUNIT[4];
else if ((length - i) == 9)// 亿(必填)
key = IUNIT[8];
else if ((length - i) == 5 && isMust5)// 万(不必填)
key = IUNIT[4];
else if ((length - i) == 1)// 元(必填)
key = IUNIT[0];
// 0遇非0时补零,不包含最后一位
if ((length - i) > 1 && integers[i + 1] != 0)
key += NUMBERS[0];
}
chineseInteger.append(integers[i] == 0 ? key
: (NUMBERS[integers[i]] + IUNIT[length - i - 1]));
}
return chineseInteger.toString();
}
/**
* 得到中文金额的小数部分
*/
private static String getChineseDecimal(int[] decimals) {
StringBuffer chineseDecimal = new StringBuffer("");
for (int i = 0; i < decimals.length; i++) {
// 舍去3位小数之后的
if (i == 3)
break;
chineseDecimal.append(decimals[i] == 0 ? ""
: (NUMBERS[decimals[i]] + DUNIT[i]));
}
return chineseDecimal.toString();
}
/**
* 判断第5位数字的单位"万"是否应加
*/
private static boolean isMust5(String integerStr) {
int length = integerStr.length();
if (length > 4) {
String subInteger = "";
if (length > 8) { // TODO 12-9-17
// 取得从低位数,第5到第8位的字串
subInteger = integerStr.substring(length - 8, length - 4);
} else {
subInteger = integerStr.substring(0, length - 4);
}
return Integer.parseInt(subInteger) > 0;
} else {
return false;
}
}
/**
* BigDecimal 相乘,四舍五入保留0位
*
* @param a
* @param b
* @return a*b
*/
public static BigDecimal mutiply(String a, String b, int roundingMode) {
BigDecimal bd = new BigDecimal(a);
return bd.multiply(new BigDecimal(b)).setScale(DFT_SCALE, roundingMode);
}
/**
* BigDecimal 相除,四舍五入保留两位
*
* @param a
* @param b
* @return a/b
*/
public static BigDecimal div(String a, String b, int roundingMode) {
BigDecimal decimal1 = new BigDecimal(a);
BigDecimal decimal2 = new BigDecimal(b);
return decimal1.divide(decimal2, DFT_SCALE, roundingMode);
}
/**
* BigDecimal 相加,四舍五入保留两位
*
* @param a
* @param b
* @return a+b
*/
public static BigDecimal sum(String a, String b, int roundingMode) {
BigDecimal decimal1 = new BigDecimal(a);
BigDecimal decimal2 = new BigDecimal(b);
// DecimalFormat format = new DecimalFormat("#0.00");
return decimal1.add(decimal2).setScale(DFT_SCALE, roundingMode);
}
/**
* BigDecimal 相减,四舍五入保留两位
*
* @param a
* @param b
* @return a+b
*/
public static BigDecimal sub(String a, String b, int roundingMode) {
BigDecimal decimal1 = new BigDecimal(a);
BigDecimal decimal2 = new BigDecimal(b);
// DecimalFormat format = new DecimalFormat("#0.00");
return decimal1.subtract(decimal2).setScale(DFT_SCALE, roundingMode);
}
/**
* 100.00 为10000
*
* @param a
* @return
*/
public static BigDecimal format(String a, int roundingMode) {
return new BigDecimal(a).multiply(new BigDecimal(100)).setScale(0,
roundingMode);
}
public static void main(String[] args) {
String number = "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方法是具体的调用
import java.math.BigDecimal;
/**
* 金额工具类
*
* @author zn
*
* @Date 2013-2-1
* @Email [email protected]
*/
public class MoneyUtil {
private static final int DFT_SCALE = 2;
/** 大写数字 */
private static final String[] NUMBERS = { "零", "壹", "贰", "叁", "肆", "伍",
"陆", "柒", "捌", "玖" };
/** 整数部分的单位 */
private static final String[] IUNIT = { "元", "拾", "佰", "仟", "万", "拾", "佰",
"仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟" };
/** 小数部分的单位 */
private static final String[] DUNIT = { "角", "分", "厘" };
/**
* 得到大写金额
*/
public static String toChinese(String str) {
str = str.replaceAll(",", "");// 去掉","
String integerStr;// 整数部分数字
String decimalStr;// 小数部分数字
// 初始化:分离整数部分和小数部分
if (str.indexOf(".") > 0) {
integerStr = str.substring(0, str.indexOf("."));
decimalStr = str.substring(str.indexOf(".") + 1);
} else if (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 + ":超出处理能力");
return str;
}
int[] integers = toArray(integerStr);// 整数部分数字
boolean isMust5 = isMust5(integerStr);// 设置万单位
int[] decimals = toArray(decimalStr);// 小数部分数字
return getChineseInteger(integers, isMust5)
+ getChineseDecimal(decimals);
}
/**
* 整数部分和小数部分转换为数组,从高位至低位
*/
private static int[] toArray(String number) {
int[] array = new int[number.length()];
for (int i = 0; i < number.length(); i++) {
array[i] = Integer.parseInt(number.substring(i, i + 1));
}
return array;
}
/**
* 得到中文金额的整数部分
*/
private static String getChineseInteger(int[] integers, boolean isMust5) {
StringBuffer chineseInteger = new StringBuffer("");
int length = integers.length;
for (int i = 0; i < length; i++) {
// 0出现在关键位置:1234(万)5678(亿)9012(万)3456(元)
// 特殊情况:10(拾元、壹拾元、壹拾万元、拾万元)
String key = "";
if (integers[i] == 0) {
if ((length - i) == 13)// 万(亿)(必填)
key = IUNIT[4];
else if ((length - i) == 9)// 亿(必填)
key = IUNIT[8];
else if ((length - i) == 5 && isMust5)// 万(不必填)
key = IUNIT[4];
else if ((length - i) == 1)// 元(必填)
key = IUNIT[0];
// 0遇非0时补零,不包含最后一位
if ((length - i) > 1 && integers[i + 1] != 0)
key += NUMBERS[0];
}
chineseInteger.append(integers[i] == 0 ? key
: (NUMBERS[integers[i]] + IUNIT[length - i - 1]));
}
return chineseInteger.toString();
}
/**
* 得到中文金额的小数部分
*/
private static String getChineseDecimal(int[] decimals) {
StringBuffer chineseDecimal = new StringBuffer("");
for (int i = 0; i < decimals.length; i++) {
// 舍去3位小数之后的
if (i == 3)
break;
chineseDecimal.append(decimals[i] == 0 ? ""
: (NUMBERS[decimals[i]] + DUNIT[i]));
}
return chineseDecimal.toString();
}
/**
* 判断第5位数字的单位"万"是否应加
*/
private static boolean isMust5(String integerStr) {
int length = integerStr.length();
if (length > 4) {
String subInteger = "";
if (length > 8) { // TODO 12-9-17
// 取得从低位数,第5到第8位的字串
subInteger = integerStr.substring(length - 8, length - 4);
} else {
subInteger = integerStr.substring(0, length - 4);
}
return Integer.parseInt(subInteger) > 0;
} else {
return false;
}
}
/**
* BigDecimal 相乘,四舍五入保留0位
*
* @param a
* @param b
* @return a*b
*/
public static BigDecimal mutiply(String a, String b, int roundingMode) {
BigDecimal bd = new BigDecimal(a);
return bd.multiply(new BigDecimal(b)).setScale(DFT_SCALE, roundingMode);
}
/**
* BigDecimal 相除,四舍五入保留两位
*
* @param a
* @param b
* @return a/b
*/
public static BigDecimal div(String a, String b, int roundingMode) {
BigDecimal decimal1 = new BigDecimal(a);
BigDecimal decimal2 = new BigDecimal(b);
return decimal1.divide(decimal2, DFT_SCALE, roundingMode);
}
/**
* BigDecimal 相加,四舍五入保留两位
*
* @param a
* @param b
* @return a+b
*/
public static BigDecimal sum(String a, String b, int roundingMode) {
BigDecimal decimal1 = new BigDecimal(a);
BigDecimal decimal2 = new BigDecimal(b);
// DecimalFormat format = new DecimalFormat("#0.00");
return decimal1.add(decimal2).setScale(DFT_SCALE, roundingMode);
}
/**
* BigDecimal 相减,四舍五入保留两位
*
* @param a
* @param b
* @return a+b
*/
public static BigDecimal sub(String a, String b, int roundingMode) {
BigDecimal decimal1 = new BigDecimal(a);
BigDecimal decimal2 = new BigDecimal(b);
// DecimalFormat format = new DecimalFormat("#0.00");
return decimal1.subtract(decimal2).setScale(DFT_SCALE, roundingMode);
}
/**
* 100.00 为10000
*
* @param a
* @return
*/
public static BigDecimal format(String a, int roundingMode) {
return new BigDecimal(a).multiply(new BigDecimal(100)).setScale(0,
roundingMode);
}
public static void main(String[] args) {
String number = "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方法是具体的调用
10. Use the Java. Text. Decimalformat class.
decimalformat DF = new decimalformat (& quot; 0,000.00");
for specific parameters, please refer to the API. Here is a part of
symbol location localization? Meaning
0 numbers are Arabic numbers
# number words are Arabic numbers, if they do not exist, they will be displayed as 0
. Numbers are decimal separator or currency decimal separator
- numbers are minus sign
, numbers are grouping separator
e numbers are mantissa and index in scientific counting method. No quotation marks are required in prefixes or suffixes< br />; The boundary of sub pattern is to separate positive and negative numbers. The prefix or suffix of sub pattern is multiplied by 100 and displayed as a percentage; The prefix or suffix of u2030 is multiplied by 1000 and displayed as a thousand fraction
¤ ( 92; U00a4) prefix or suffix no currency symbol, replaced by currency symbol. If both appear at the same time, replace them with international currency symbols. If it appears in a pattern, the currency decimal separator is used instead of the decimal separator< br />' Whether prefixes or suffixes are used to quote special characters in prefixes or suffixes, such as & quot 39;# 39;#& quot; Format 123 as & quot# 123" To create the single quote itself, use two single quotes in succession: & quot# o' 39; clock"
decimalformat DF = new decimalformat (& quot; 0,000.00");
for specific parameters, please refer to the API. Here is a part of
symbol location localization? Meaning
0 numbers are Arabic numbers
# number words are Arabic numbers, if they do not exist, they will be displayed as 0
. Numbers are decimal separator or currency decimal separator
- numbers are minus sign
, numbers are grouping separator
e numbers are mantissa and index in scientific counting method. No quotation marks are required in prefixes or suffixes< br />; The boundary of sub pattern is to separate positive and negative numbers. The prefix or suffix of sub pattern is multiplied by 100 and displayed as a percentage; The prefix or suffix of u2030 is multiplied by 1000 and displayed as a thousand fraction
¤ ( 92; U00a4) prefix or suffix no currency symbol, replaced by currency symbol. If both appear at the same time, replace them with international currency symbols. If it appears in a pattern, the currency decimal separator is used instead of the decimal separator< br />' Whether prefixes or suffixes are used to quote special characters in prefixes or suffixes, such as & quot 39;# 39;#& quot; Format 123 as & quot# 123" To create the single quote itself, use two single quotes in succession: & quot# o' 39; clock"
Hot content
