package com.slowly.java;
import java.util.Scanner;
/**
* Description:
* <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
* <br/>Copyright (C), 2001-2016, Yeeku.H.Lee
* <br/>This program is protected by copyright laws.
* <br/>Program Name:
* <br/>Date:
* @author Yeeku.H.Lee kongyeeku@163.com
* @version 1.0
*/
public class Num2Rmb02
{
private String[] hanArr = {"零" , "壹" , "贰" , "叁" , "肆" ,
"伍" , "陆" , "柒" , "捌" , "玖"};
private String[] unitArr = {"十" , "百" , "千","万","十万","百万","千万","亿","十","百","千","万","千万","亿"};
private String[] unitArr1 = {"分" , "角"};
/**
* 把一个浮点数分解成整数部分和小数部分字符串
* @param num 需要被分解的浮点数
* @return 分解出来的整数部分和小数部分。第一个数组元素是整数部分,第二个数组元素是小数部分。
*/
private String[] divide(double num)
{
// 将一个浮点数强制类型转换为long,即得到它的整数部分
int zheng = (int)num;
// 浮点数减去整数部分,得到小数部分,小数部分乘以100后再取整得到2位小数
int xiao = (int) Math.round((num - zheng) * 100);
// 下面用了2种方法把整数转换为字符串
return new String[]{zheng + "", String.valueOf(xiao)};
}
private int[] toNum(double num)
{
int num1 = (int)num;
Integer zheng = (Integer)num1;
//String s1 = zheng.toString();
//Integer numk1 = (int) (zheng%10000);//取整数的底四位
String s1 = zheng.toString();
int numLen1 = s1.length();
int[] numarry = new int[numLen1];
for(int i=0;i<numLen1;i++)
{
numarry[i] = s1.charAt(i) - 48;
//numarry[0][i]=numarry1[i];
//System.out.println(numarry[i]);
}
return numarry;
}
/**
* 把一个四位的数字字符串变成汉字字符串
* @param numStr 需要被转换的四位的数字字符串
* @return 四位的数字字符串被转换成的汉字字符串。
*/
private String toHanStr(int[] numarry)
{
String result = "";
int numLen = numarry.length;
// 依次遍历数字字符串的每一位数字
for (int i = 0 ; i < numLen ; i++ )
{
// 把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48
// 因此把char型数字减去48得到int型数字,例如'4'被转换成4。
// int num = numarry.charAt(i) - 48;
// 如果不是最后一位数字,而且数字不是零,则需要添加单位(千、百、十)
if ( i != numLen - 1&& numarry[i]!= 0 )
{
result += hanArr[numarry[i]] + unitArr[numLen - 2 - i];
}
else if (i>0 )
{
if ((numarry[i]==0)&&(numarry[i-1]==0) )
{
//result +="";
}
}
else if(i == numLen - 1&& numarry[i]== 0 )
{
}
// 否则不要添加单位
else
{
result += hanArr[numarry[i]];
}
}
return result;
}
private String toHanStr1(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] + unitArr1[numLen - 1 - i];
}
// 否则不要添加单位
else
{
result += hanArr[num];
}
}
return result+"分";
}
public static void main(String[] args)
{
System.out.println("请输入要转换的钱数:");
@SuppressWarnings("resource")
Scanner in = new Scanner(System.in);
Double inmun = in.nextDouble();
Num2Rmb02 nr = new Num2Rmb02();
// 测试把一个浮点数分解成整数部分和小数部分
//System.out.println(Arrays.toString(nr.divide(236711125.123)));
// 测试把一个四位的数字字符串变成汉字字符串
System.out.print(nr.toHanStr(nr.toNum(inmun))+"圆");
System.out.print(nr.toHanStr1(nr.divide(inmun)[1]));
//System.out.println(nr.toHanStr("100"));
}
}
java实现钱数数字到大写的转换联系
最新推荐文章于 2023-10-07 14:26:07 发布