数字转货币大写(java):


    public   static   String   numtochinese(String   input){  
        String   s1="零壹贰叁肆伍陆柒捌玖";  
        String   s4="分角整元拾佰仟万拾佰仟亿拾佰仟";  
        String   temp="";  
        String   result="";  
        if   (input==null)   return   "输入字串不是数字串只能包括以下字符('0'~'9','.'),输入字串最大只能精确到仟亿,小数点只能两位!";  
        temp=input.trim();  
        float   f;  
        try{  
                f=Float.parseFloat(temp);  
   
        }catch(Exception   e){return   "输入字串不是数字串只能包括以下字符('0'~'9','.'),输入字串最大只能精确到仟亿,小数点只能两位!";}  
        int   len=0;  
        if   (temp.indexOf(".")==-1)   len=temp.length();  
        else   len=temp.indexOf(".");  
        if(len>s4.length()-3)   return("输入字串最大只能精确到仟亿,小数点只能两位!");  
        int   n1,n2=0;  
        String   num="";  
        String   unit="";  
   
        for(int   i=0;i<temp.length();i++){  
        if(i>len+2){break;}  
        if(i==len)   {continue;}  
        n1=Integer.parseInt(String.valueOf(temp.charAt(i)));  
        num=s1.substring(n1,n1+1);  
        n1=len-i+2;  
        unit=s4.substring(n1,n1+1);  
        result=result.concat(num).concat(unit);  
        }  
        if   ((len==temp.length())||(len==temp.length()-1))   result=result.concat("整");  
        if   (len==temp.length()-2)   result=result.concat("零分");  
        return   result;  
    }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要将Java数字为人民币大写汉字输出,可以使用如下代码: ```java import java.math.BigDecimal; public class NumberToChinese { // 数字对应的汉字 private static final String[] CN_NUM = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; // 数量级对应的汉字 private static final String[] CN_UNIT = {"", "拾", "佰", "仟", "万", "亿"}; // 小数点后面的汉字 private static final String CN_POINT = "点"; // 人民币大写汉字 private static final String CN_MONETARY_UNIT = "元"; /** * 数字为人民币大写汉字 * @param num 数字 * @return 人民币大写汉字 */ public static String numberToChinese(BigDecimal num) { if (num == null || num.compareTo(BigDecimal.ZERO) == 0) { return "零元整"; } // 处理整数部分 StringBuilder sb = new StringBuilder(); long integerPart = num.longValue(); // 获取整数部分 int unitIndex = 0; // 数量级索引 while (integerPart > 0) { int digit = (int)(integerPart % 10); // 获取当前位的数字 if (digit > 0 || sb.length() > 0) { // 当前位为0且前面已经有数字,则在当前位添加“零” sb.insert(0, CN_NUM[digit] + CN_UNIT[unitIndex]); } else if (unitIndex == 4) { // 当前位为“万”时,如果前面没有数字,则在当前位添加“零” sb.insert(0, CN_NUM[digit]); } integerPart /= 10; unitIndex++; } sb.append(CN_MONETARY_UNIT); // 添加“元” // 处理小数部分 int decimalPlaces = num.scale(); // 获取小数位数 if (decimalPlaces > 0) { // 如果有小数,则处理小数部分 sb.append(CN_POINT); long decimalPart = num.movePointRight(decimalPlaces).longValue() % 100; // 获取小数部分 if (decimalPart > 0) { // 如果小数部分不为0 sb.append(CN_NUM[decimalPart / 10] + "角"); if (decimalPart % 10 > 0) { sb.append(CN_NUM[decimalPart % 10] + "分"); } } else { // 如果小数部分为0 sb.append("整"); } } else { // 如果没有小数,则添加“整” sb.append("整"); } return sb.toString(); } public static void main(String[] args) { BigDecimal num = new BigDecimal("123456789.01"); System.out.println(numberToChinese(num)); // 壹亿贰仟叁佰肆十五万陆仟捌佰柒十元零壹分 } } ``` 注意:该代码仅适用于人民币,如果要将其他货币大写汉字,需要根据具体情况进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值