将类似于1960以壹仟玖佰陆拾的形式输出
Num2Rmb.java的源代码如下:
[code lang="java"]
import java.util.Arrays;
public class Num2Rmb
{
private String[] hanArr={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖","拾",};
private String[] unitArr={"拾","佰","仟"};
/**
*把一个浮点数分解成整数部分和小数部分字符串
*@param num需要被分解的浮点数
*@return分解出来的整数部分和小数部分。第一个数组元素是整数部分,第二个数组元素是小数部分
*/
private String[] divide(double num)
{
//将一个浮点数强制类型转换为long,即得到它的整数部分
long zheng=(long)num;
//浮点数减去整数部分,得到小数部分,小数部分乘以100后再取整得到两位小数
long xiao=Math.round((num-zheng)*100);
//下面用了两个方法把整数转换为字符串
return new String[]{zheng+"",String.valueOf(xiao)};
}
/**
*把一个四位的数字字符串变成汉字字符串
*@param numStr 需要被转换的四位的数字字符串
*@return 四位的数字字符串被转换成的汉字字符串
*/
private String toHanStr(String numStr)
{
String result="";
int numLen=numStr.length();
//依次遍历数字字符串的每一位数字
for (int i=0;i<numLen ;i++ )
{
//把char型数字转换成的int数字,因为他们的ASCII码值恰好相差48
//因此把char型数字减去48得到int型数字,例如'4'被转换成4。
int num=numStr.charAt(i)-48;
//如果不是最后一个数字,而且数字不是零,则需要添加单位(仟、佰、拾)
if (i !=numLen-1&&num!=0)
{
result +=hanArr[num]+unitArr[numLen-2-i];
}
//否则不要添加单位
else
{
result +=hanArr[num];
}
}
return result;
}
public static void main(String[] args)
{
Num2Rmb nr = new Num2Rmb();
//测试把一个浮点数分解成整数部分和小数部分
System.out.println(Arrays.toString(nr.divide(236711125.123)));
//测试把一个四位的数字字符串变成汉字字符
System.out.println(nr.toHanStr("6019"));
}
}
[/code]

分类: Java

发表评论

电子邮件地址不会被公开。 必填项已用*标注