为什么使用javascript??
给你一个java的源程序,按照此算法修改后应该就可以使用了。
class test11{
public static String toCaption(double d)
{
//大写数字的数组
String as[] = {
"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"
};
//定义大写货币单位的排列数组
String as1[] = {
"仟", "佰", "拾", "万", "仟", "佰", "拾", "亿", "仟", "佰",
"拾", "万", "仟", "佰", "拾", "元", "角", "分"
}; String as2[] = new String[40];
String as3[] = new String[40];
double d1 = 0.0D;
int ai[] = new int[20];
boolean flag = false;
boolean flag1 = false;
boolean flag2 = false;
boolean flag3 = false;
double d4 = 1000000000000000D;
StringBuffer stringbuffer = new StringBuffer("");
String s;
//判断待转换金额是否等于零
if(d == 0.0D) {
s = "零元整";
}
else{
//将小数点删除
d *= 100D;
//获得d4的数量级,即d所在的数量级(如:d为1200098.0,d4为1000000)
for(; d4 >= 1.0D; d4 /= 10D){
double d2 = d / d4;
if(d2 >= 1.0D)
break;
} int i;
//将d值按位进行截取并存放到数组中
for(i = 0; d4 >= 1.0D; i++){
//获得d整除后的值,如1.200098
double d3 = d / d4;
//截取整数并放到数组中,如1,2,0,....
ai[i] = (int)d3;
//取d余数,如200098,00098,...
d %= d4;
//整除,将d4的数量级减小,如:10000,1000,100,...
d4 /= 10D;
}
//获得数值的长度
int i1 = i;
//转换后大写金额的长度
int k = i1 * 2 - 1;
//货币单位数组的长度
int l = 17;
for(i = i1 - 1; i >= 0; i--){
//将货币单位加到数组中,从数组中的最后一个值开始,如:分,角,...
as2[k] = as1[l];
k--;
//将金额转换成大写并放到数组中,如,玖,捌,零,......
as2[k] = as[ai[i]];
k--;
l--;
} i1 *= 2;
k = 0;
l = 0;
for(i = 0; i < i1; i++){
//判断数组中是否有零的值
if(as2[i].compareTo("零") == 0){
//判断是否到数组的最后一位
if(as2[i + 1] != null){
//判断零后的字符是否为万,亿,元三个字符
if(as2[i + 1].compareTo("万") != 0 && as2[i + 1].compareTo("亿") != 0 && as2[i + 1].compareTo("元") != 0){
as3[k] = as2[i];
i++;
k++;
}
else{
i++;
as3[k] = as2[i];
k++;
}
}
}
else{
//生成新的数组,如,壹万捌千元整
as3[k] = as2[i];
k++;
}
}
for(k = 0; as3[k] != null; k++){
//将金额数组中的零值替换为"_"
if(as3[k].compareTo("零") == 0 && as3[k + 1] != null && (as3[k + 1].compareTo("万") == 0 || as3[k + 1].compareTo("亿") == 0 || as3[k + 1].compareTo("元") == 0 || as3[k + 1].compareTo("零") == 0))
as3[k] = "_";
} //将金额数组中的倒数第二个的零值替换为"_"
if(as3[k - 1].compareTo("零") == 0)
as3[k - 1] = "_"; k = 0;
i = 0; for(; as3[k] != null; k++){
//将数组中的"_"删除
if(as3[k].compareTo("_") != 0)
{
as2[i] = as3[k];
i++;
}
} i1 = i;
String ss ="" ;
//生成金额转换后的大写字符串
for(int j = 0; j < i1; j++)
{
stringbuffer.append(as2[j]);
if(as2[j].compareTo("亿") == 0 && as2[j + 1].compareTo("万") == 0)
as2[j + 1] = "";
} s = stringbuffer.append("整").toString();
}
return s;
}
public static void main(String[] arg){
test11 t = new test11(); String s = t.toCaption(12000.89);
System.out.println(s);
}
}
给你一个java的源程序,按照此算法修改后应该就可以使用了。
class test11{
public static String toCaption(double d)
{
//大写数字的数组
String as[] = {
"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"
};
//定义大写货币单位的排列数组
String as1[] = {
"仟", "佰", "拾", "万", "仟", "佰", "拾", "亿", "仟", "佰",
"拾", "万", "仟", "佰", "拾", "元", "角", "分"
}; String as2[] = new String[40];
String as3[] = new String[40];
double d1 = 0.0D;
int ai[] = new int[20];
boolean flag = false;
boolean flag1 = false;
boolean flag2 = false;
boolean flag3 = false;
double d4 = 1000000000000000D;
StringBuffer stringbuffer = new StringBuffer("");
String s;
//判断待转换金额是否等于零
if(d == 0.0D) {
s = "零元整";
}
else{
//将小数点删除
d *= 100D;
//获得d4的数量级,即d所在的数量级(如:d为1200098.0,d4为1000000)
for(; d4 >= 1.0D; d4 /= 10D){
double d2 = d / d4;
if(d2 >= 1.0D)
break;
} int i;
//将d值按位进行截取并存放到数组中
for(i = 0; d4 >= 1.0D; i++){
//获得d整除后的值,如1.200098
double d3 = d / d4;
//截取整数并放到数组中,如1,2,0,....
ai[i] = (int)d3;
//取d余数,如200098,00098,...
d %= d4;
//整除,将d4的数量级减小,如:10000,1000,100,...
d4 /= 10D;
}
//获得数值的长度
int i1 = i;
//转换后大写金额的长度
int k = i1 * 2 - 1;
//货币单位数组的长度
int l = 17;
for(i = i1 - 1; i >= 0; i--){
//将货币单位加到数组中,从数组中的最后一个值开始,如:分,角,...
as2[k] = as1[l];
k--;
//将金额转换成大写并放到数组中,如,玖,捌,零,......
as2[k] = as[ai[i]];
k--;
l--;
} i1 *= 2;
k = 0;
l = 0;
for(i = 0; i < i1; i++){
//判断数组中是否有零的值
if(as2[i].compareTo("零") == 0){
//判断是否到数组的最后一位
if(as2[i + 1] != null){
//判断零后的字符是否为万,亿,元三个字符
if(as2[i + 1].compareTo("万") != 0 && as2[i + 1].compareTo("亿") != 0 && as2[i + 1].compareTo("元") != 0){
as3[k] = as2[i];
i++;
k++;
}
else{
i++;
as3[k] = as2[i];
k++;
}
}
}
else{
//生成新的数组,如,壹万捌千元整
as3[k] = as2[i];
k++;
}
}
for(k = 0; as3[k] != null; k++){
//将金额数组中的零值替换为"_"
if(as3[k].compareTo("零") == 0 && as3[k + 1] != null && (as3[k + 1].compareTo("万") == 0 || as3[k + 1].compareTo("亿") == 0 || as3[k + 1].compareTo("元") == 0 || as3[k + 1].compareTo("零") == 0))
as3[k] = "_";
} //将金额数组中的倒数第二个的零值替换为"_"
if(as3[k - 1].compareTo("零") == 0)
as3[k - 1] = "_"; k = 0;
i = 0; for(; as3[k] != null; k++){
//将数组中的"_"删除
if(as3[k].compareTo("_") != 0)
{
as2[i] = as3[k];
i++;
}
} i1 = i;
String ss ="" ;
//生成金额转换后的大写字符串
for(int j = 0; j < i1; j++)
{
stringbuffer.append(as2[j]);
if(as2[j].compareTo("亿") == 0 && as2[j + 1].compareTo("万") == 0)
as2[j + 1] = "";
} s = stringbuffer.append("整").toString();
}
return s;
}
public static void main(String[] arg){
test11 t = new test11(); String s = t.toCaption(12000.89);
System.out.println(s);
}
}
解决方案 »
- 如何用jsp实现CKeditor上传功能
- struts2和spring整合时怎么配置不同包下action的bean
- jsp中如何读取加密狗的流水号在线等,急用!!!!!!!!!!!!!!
- 取当前系统时间的方法
- 这个这个,这里不能上传附件吗?请教各位高手
- 可惜呀!java被人弄臭了,导致其他人以为java只能是jsp,为什么呢?
- 一个简单的问题
- 求推荐一本书!
- 请问 tomcat 中怎么配置多端口? 在线等待..........
- ssh开发支持pdf浏览——在线给分
- 100分:struts问题 html:selelct (在线急等)
- ShowModalWindow出来窗口,用submit调用了servlet后,怎么原来页面迁移了?而不是ModalWindow
to:: UserJavaPerson(hehao) 试用先然后再给分少等,谢谢了!