您的位置:首页 > 其它

将一个浮点数分成整数和小数部分,金额转换成大写

2017-04-14 15:35 459 查看


public
classNum2Rmb {

 

 
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){

    
Stringresult=
"";

    
int
numLen =
numStr.length();

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

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

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

  
e6e9
    
//因此把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) {

    
Num2Rmbnr =
new Num2Rmb();

    
//测试

    
Scannerin=
newScanner(System.in);

    
System.out.println("请输入浮点数:");

    
double
num1 =
in.nextDouble();

    
System.out.println("浮点数分解成整数和小数部分:"+Arrays.toString(nr.divide(num1)));

    
System.out.println("请输入十万以下的金额:");

    
Stringnum2=
in.next();

    
System.out.println("转成大写为:"+nr.toHanStr(num2));

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