黑马程序员技术交流社区
标题:
关于金钱转换,小数部分转换有点问题
[打印本页]
作者:
hhmm665544
时间:
2014-4-15 17:31
标题:
关于金钱转换,小数部分转换有点问题
private static String getDecimal(String strNum) {
// 判断是否包含小数点
if (strNum.indexOf(".") == -1) {
return "";
}
strNum = strNum.substring(strNum.indexOf(".") + 1);
// 反转字符串
String num = new StringBuffer(strNum).reverse().toString();
// 创建一个StringBuffer对象
StringBuffer temp = new StringBuffer();
// 加入单位
for (int i = 0; i < num.length(); i++) {
temp.append(STR_UNIT2[i]);
temp.append(STR_NUMBER[num.charAt(i) - 48]);
}
num = temp.reverse().toString(); // 替换字符串的字符
num = numReplace(num, "零角", "零"); // 替换字符串的字符
num = numReplace(num, "零分", "零"); // 替换字符串的字符
num = numReplace(num, "零厘", "零"); // 替换字符串的字符
num = numReplace(num, "零零", "零"); // 替换字符串的字符
// 如果字符串以零结尾将其除去
while(num.lastIndexOf("零") == num.length() - 1) {
num = num.substring(0, num.length() - 1);
}
return num;
}
复制代码
作者:
呆呆沙师妹
时间:
2014-4-15 18:10
小数部分与整数部分是不一样的。
整数部分最高位的单位不确定,需要反转,从最低位,即元、拾、百、、、、方式进行读取和添加单位;
但小数部分,则是最低位可能不确定,不需要反转,直接按角、分、厘。。。进行转换,并且单位要后添加。
这是Java开发实战1200例的题目吧?
我是这样弄的:
private static String getDecimal(String num) {
// TODO Auto-generated method stub
String[] STR_UNIT = {"角", "分", "厘"};
String[] STR_NUMBER = {"零", "壹", "贰", "叁", "肆",
"伍", "陆","柒", "捌", "玖"};
if( num.indexOf(".") != -1 ){
num = num.substring( num.indexOf(".") + 1, num.length());
}else{
return "";
}
num = new StringBuilder(num).toString();
StringBuilder temp = new StringBuilder();
for( int i = 0; i < num.length(); i ++ ){
temp.append( STR_NUMBER[ num.charAt(i) - 48 ]);
temp.append( STR_UNIT[ i ]);
}
num = temp.toString();
num = num.replace( "零角", "零" );
num = num.replace( "零分", "零" );
num = num.replace( "零厘", "零" );
if( num.lastIndexOf("零") == num.length() - 1){
num = num.substring(0, num.length() - 1);
}
return num;
}
复制代码
作者:
hhmm665544
时间:
2014-4-16 22:40
谢谢,我懂了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2