您的位置:首页 > 编程语言 > Java开发

将一个浮点数转换成人民币读法字符串(java)

2013-11-01 18:34 381 查看
public class Num2Rmb

{

private String[] hanArr = {"零" , "壹" , "贰" , "叁" , "肆" ,

"伍" , "陆" , "柒" , "捌" , "玖"};

private String[] unitArr = {"十" , "百" , "千"};

/**

* 把一个浮点数分解成整数部分和小数部分字符串

* @param num 需要被分解的浮点数

* @return 分解出来的整数部分和小数部分。第一个数组元素是整数部分,第二个数组元素是小数部分。

*/

private String[] divide(double num)

{

//将一个浮点数强制类型转换为long,即得到它的整数部分

long zheng = (long)num;

//浮点数减去整数部分,得到小数部分,小数部分乘以100后再取整得到2位小数

long xiao = Math.round((num - zheng) * 100);

//下面用了2种方法把整数转换为字符串

return new String[]{zheng + "", String.valueOf(xiao)};

}

/**

* 把一个四位的数字字符串变成汉字字符串

* @param numStr 需要被转换的四位的数字字符串

* @return 四位的数字字符串被转换成的汉字字符串。

*/

private String toHanStr(String numStr)

{

//int pretemp=0;

String result = "";

int numLen = numStr.length();

int temp=0;

//依次遍历数字字符串的每一位数字

for (int i = 0; i <numLen ; i++ )

{

//把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48

//因此把char型数字减去48得到int型数字,例如'4'被转换成4。

int num = numStr.charAt(i) - 48;

//如果不是最后一位数字,而且数字不是零,则需要添加单位(千、百、十)

if (num==0)

{

temp++;

}

if (temp==2)

{

//pretemp=temp;

temp=0;

continue;//如果不止一个0跳出本次循环

}

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("9009"));

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: