笔试题,数字金额如何转换为大写 1234589.26就是换算为。。圆多少角多少分的形式? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 恩做过public class test{ String bignum[] = {"零","一","二","三","四","五","六","七","八","久"}; String sign1[] = {"","十","百","千"}; String sign2[] = {"圆","万","亿","兆"}; String sign3[] = {"角","分","厘"}; test(String s){ s = s.replaceFirst("^0+",""); int pt = s.indexOf("."); if(pt<0) s = parta(s); else s = parta(s.substring(0,pt))+partb(s.substring(pt+1)); System.out.println(s); } String parta(String s){ int[] number = new int[s.length()]; for(int i=0;i<s.length();i++) number[s.length()-1-i] = Integer.parseInt(i==s.length()-1?s.substring(i):s.substring(i,i+1)); s = ""; for(int i=number.length-1;i>=0;i--){ s+=bignum[number[i]]; s+=i%4==0?sign2[i/4]:number[i]>0?sign1[i%4]:""; } while(s.indexOf("零零")!=-1) s=s.replaceFirst("零零","零"); for(int i=0;i<sign1.length;i++) while(s.indexOf("零"+sign2[i])!=-1) s=s.replaceFirst("零"+sign2[i],sign2[i]); for(int i=sign2.length-1;i>0;i--) while(s.indexOf(sign2[i]+sign2[i-1])!=-1) s=s.replaceFirst(sign2[i]+sign2[i-1],sign2[i]); return s; } String partb(String s){ int[] number = new int[s.length()]; for(int i=0;i<s.length();i++) number[s.length()-1-i] = Integer.parseInt(i==s.length()-1?s.substring(i):s.substring(i,i+1)); s = ""; for(int i=number.length-1;i>=0;i--) if(number[i]>0) s += bignum[number[i]]+sign3[number.length-i-1]; return s; } public static void main(String args[]){ new test(args[0]); }}C:\java>java test 0021000230100.003二百一十亿零二十三万零一百圆三厘 这个是一个完整可用版http://www.java2000.net/viewthread.jsp?tid=32 之前也做过,中文和英文也有,不过是用script做的.嘎嘎...估计不适用.呵呵. 转贴一个吧:public class ChineseCurrency { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("please input the price:"); double number = scan.nextDouble(); System.out.println(toChineseCurrency(new Double(number))); } public static String toChineseCurrency(Object o) { if (o instanceof Number) { String s = new DecimalFormat("#.00").format(o); System.out.println(s); s = s.replaceAll("\\.", ""); char[] digit = {'零', '壹', '\u8D30', '\u53C1', '肆', '伍', '\u9646', '\u67D2', '捌', '玖'}; String unit = "仟佰拾兆仟佰拾\u4EBF仟佰拾万仟佰拾元角分"; int length = unit.length(); StringBuffer sb = new StringBuffer(unit); for (int i = s.length() - 1; i >= 0; i--) { sb = sb.insert(length - s.length() + i, digit[(s.charAt(i) - 0x30)]); } s = sb.substring(length - s.length(), length + s.length()); s = s.replaceAll("零[拾佰仟]", "零").replaceAll("零{2,}", "零") .replaceAll("零([兆万元])", "$1").replaceAll("零[角分]", ""); return s; } else { throw new NumberFormatException(); } }}UNICODE码自己转一下, 我在日文系统下. public String GetBigMoney(double eSender) { double NewMoney; int Index, len, flag; String StrTemp = null; char[] p; String Number[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; String MonetaryUnit[] = {"万","仟","佰","拾","亿","仟","佰","拾","万","仟","佰","拾","圆","角","分"} ; NewMoney = Math.abs(eSender); 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; } 新人求解 ConcreteMediator类及其相关的类为什么在api找不到 怎么样关闭本窗口但是不会退出程序 在线等 熟悉正则表达式的朋友进来探讨一下 面试题提问了,基础 想在深圳参加scjp认证的培训,不要网上培训的 Sun开发技术大家讲征集活动讨论区 相当全面的Java资料网站 Date型转换成long型的问题,我的方法转出来的好像是不对的! 高手来答 急!!怎样产生0--3之间的随机整数? 网络流大小问题 JAVA程序 输入数字 选择算法直接出结果 哪位大虾来解决下
做过public class test{
String bignum[] = {"零","一","二","三","四","五","六","七","八","久"};
String sign1[] = {"","十","百","千"};
String sign2[] = {"圆","万","亿","兆"};
String sign3[] = {"角","分","厘"};
test(String s){
s = s.replaceFirst("^0+","");
int pt = s.indexOf(".");
if(pt<0)
s = parta(s);
else
s = parta(s.substring(0,pt))+partb(s.substring(pt+1));
System.out.println(s);
}
String parta(String s){
int[] number = new int[s.length()];
for(int i=0;i<s.length();i++)
number[s.length()-1-i] = Integer.parseInt(i==s.length()-1?s.substring(i):s.substring(i,i+1));
s = "";
for(int i=number.length-1;i>=0;i--){
s+=bignum[number[i]];
s+=i%4==0?sign2[i/4]:number[i]>0?sign1[i%4]:"";
}
while(s.indexOf("零零")!=-1)
s=s.replaceFirst("零零","零");
for(int i=0;i<sign1.length;i++)
while(s.indexOf("零"+sign2[i])!=-1)
s=s.replaceFirst("零"+sign2[i],sign2[i]);
for(int i=sign2.length-1;i>0;i--)
while(s.indexOf(sign2[i]+sign2[i-1])!=-1)
s=s.replaceFirst(sign2[i]+sign2[i-1],sign2[i]);
return s;
}
String partb(String s){
int[] number = new int[s.length()];
for(int i=0;i<s.length();i++)
number[s.length()-1-i] = Integer.parseInt(i==s.length()-1?s.substring(i):s.substring(i,i+1));
s = "";
for(int i=number.length-1;i>=0;i--)
if(number[i]>0)
s += bignum[number[i]]+sign3[number.length-i-1];
return s;
}
public static void main(String args[]){
new test(args[0]);
}
}C:\java>java test 0021000230100.003
二百一十亿零二十三万零一百圆三厘
http://www.java2000.net/viewthread.jsp?tid=32
public class ChineseCurrency {
public static void main(String[] args) { Scanner scan = new Scanner(System.in);
System.out.println("please input the price:");
double number = scan.nextDouble(); System.out.println(toChineseCurrency(new Double(number)));
} public static String toChineseCurrency(Object o) {
if (o instanceof Number) {
String s = new DecimalFormat("#.00").format(o);
System.out.println(s);
s = s.replaceAll("\\.", "");
char[] digit = {'零', '壹', '\u8D30', '\u53C1', '肆', '伍', '\u9646', '\u67D2', '捌', '玖'};
String unit = "仟佰拾兆仟佰拾\u4EBF仟佰拾万仟佰拾元角分";
int length = unit.length();
StringBuffer sb = new StringBuffer(unit);
for (int i = s.length() - 1; i >= 0; i--) {
sb = sb.insert(length - s.length() + i, digit[(s.charAt(i) - 0x30)]);
}
s = sb.substring(length - s.length(), length + s.length());
s = s.replaceAll("零[拾佰仟]", "零").replaceAll("零{2,}", "零")
.replaceAll("零([兆万元])", "$1").replaceAll("零[角分]", "");
return s;
} else {
throw new NumberFormatException();
}
}
}
UNICODE码自己转一下, 我在日文系统下.
{
double NewMoney;
int Index, len, flag;
String StrTemp = null;
char[] p;
String Number[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
String MonetaryUnit[] = {"万","仟","佰","拾","亿","仟","佰","拾","万","仟","佰","拾","圆","角","分"} ;
NewMoney = Math.abs(eSender);
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;
}