JAVA中如何将数字转换为货币
Ⅰ 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));
}
}
Ⅱ java中如何将十进制数字转化成二进制
如果表达小于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));
}
}
}

Ⅲ [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中怎样将一个字符串中的数字转换成整型
自己写一个方法吧,把字符串中不是数字的都去掉,留下数字的组成一个新字符串,然后把这个字符串转成int类型。
Ⅳ excel表格里如何将数字转换成货币数字
将数字转换为货币数字,其实就是将数值单元格格式设置为货币格式。依次步骤为:
选中需要设置的单元格,鼠标右击选择单元格格式
出现单元格格式对话框,点击数字选项卡(一般默认数字选项卡激活)
点击会计专用,按自己的需求选择货币符号以及小数点位数,然后确定
如下图具体录制的操作:

Ⅵ 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将阿拉伯数字转换为金额
你好 就剩一个类型转换就好了 比如
Double cost=(double)5;
Ⅷ Java中怎么把int型的数字转换成char型的数字
java将int类型的数字转换成char型,主要是通过强制类型转换,如下代码:
publicclassInt2CharDemo{publicstaticvoidmain(String[]args){//将int类型数字8转换为char类型数字8
intnum1=8;
charch1=(char)(num1+48);
System.out.println("ch1="+ch1);//将char类型数字8转换为int类型数字8
//方法一:
Characterch2='8';//char是基本数据类型,Character是其包装类型。
intnum2=Integer.parseInt(ch2.toString());
System.out.println("num2="+num2);
//方法二:
charch3='8';
intnum3=ch3-48;
System.out.println("num3="+num3);}
}
Ⅸ Java 将数字格式化为货币字符窜。。。下面这个程序应该怎么改!求高手!!
这里不对:Number number=new Number(System.in);
Number是一个抽象类,不能被实例化的 。
还有,就没有NumberFormat.FULL这个属性
Ⅹ 在java里,如何将double类型的数字转换成货币那种形式,数字是用逗号分开的那种
Format fm1=new DecimalFormat("#,###.00");
double num1=12345.678;
fm1.format(num1);
可以自己在程序里试试哈。
