`

将数字转换成人民币

    博客分类:
  • java
 
阅读更多
  1. public class MoneyUtil {  
  2.     private final static String[] CN_Digits = { "零""壹""貳""叁""肆""伍",  
  3.             "陆""柒""捌""玖", };  
  4.   
  5.     /** 
  6.      * 将数字型货币转换为中文型货币 <br/> 
  7.      * 作者:wallimn 时间:2009-4-10 下午09:59:26<br/> 
  8.      * 博客:http://blog.csdn.net/wallimn<br/> 
  9.      * 参数:<br/> 
  10.      *  
  11.      * @param moneyValue 
  12.      *             字符串形式的金额,小数部分,将多于3位部分舍去,不做四舍五入 
  13.      * @return 
  14.      */  
  15.     public static String CNValueOf(String moneyValue) {  
  16.         //使用正则表达式,去除前面的零及数字中的逗号  
  17.         String value = moneyValue.replaceFirst("^0+""");  
  18.         value = value.replaceAll(",""");  
  19.         //分割小数部分与整数部分  
  20.         int dot_pos = value.indexOf('.');  
  21.         String int_value;  
  22.         String fraction_value;  
  23.         if (dot_pos == -1) {  
  24.             int_value = value;  
  25.             fraction_value = "00";  
  26.         } else {  
  27.             int_value = value.substring(0, dot_pos);  
  28.             fraction_value = value.substring(dot_pos + 1, value.length())  
  29.                     + "00".substring(02);//也加两个0,便于后面统一处理  
  30.         }  
  31.   
  32.         int len = int_value.length();  
  33.         if (len>16return "值过大";  
  34.         StringBuffer cn_currency = new StringBuffer();  
  35.         String[] CN_Carry = new String[] { """万""亿""万" };  
  36.         //数字分组处理,计数组数  
  37.         int cnt = len/4+(len%4==0?0:1);  
  38.         //左边第一组的长度  
  39.         int partLen = len-(cnt-1)*4;  
  40.         String partValue=null;  
  41.         boolean bZero=false;//有过零  
  42.         String curCN=null;  
  43.         for(int i =0; i<cnt; i++){  
  44.             partValue = int_value.substring(0,partLen);  
  45.             int_value=int_value.substring(partLen);  
  46.             curCN = Part2CN(partValue,i!=0&&!"零".equals(curCN));  
  47.             //System.out.println(partValue+":"+curCN);  
  48.             //若上次为零,这次不为零,则加入零            
  49.             if(bZero && !"零".equals(curCN)){  
  50.                 cn_currency.append("零");  
  51.                 bZero=false;  
  52.             }  
  53.             if("零".equals(curCN))bZero=true;  
  54.             //若数字不是零,加入中文数字及单位  
  55.             if(!"零".equals(curCN)){  
  56.                 cn_currency.append(curCN);  
  57.                 cn_currency.append(CN_Carry[cnt-1-i]);  
  58.             }  
  59.             //除最左边一组长度不定外,其它长度都为4  
  60.             partLen=4;  
  61.             partValue=null;  
  62.         }  
  63.         cn_currency.append("元");  
  64.         //处理小数部分  
  65.         int fv1 = Integer.parseInt(fraction_value.substring(0,1));  
  66.         int fv2 = Integer.parseInt(fraction_value.substring(1,2));  
  67.         if(fv1+fv2==0){  
  68.             cn_currency.append("整");  
  69.         }  
  70.         else{  
  71.             cn_currency.append(CN_Digits[fv1]).append("角");  
  72.             cn_currency.append(CN_Digits[fv2]).append("分");  
  73.         }  
  74.         return cn_currency.toString();  
  75.     }  
  76.   
  77.     /** 
  78.      * 将一组数字(不多于四个)转化成中文表示 <br/> 
  79.      * 作者:wallimn 时间:2009-4-11 下午07:41:25<br/> 
  80.      * 博客:http://wallimn.iteye.com<br/> 
  81.      * 参数:<br/> 
  82.      *  
  83.      * @param partValue 字符串形式的数字 
  84.      * @param bInsertZero 是否在前面添加零 
  85.      * @return 
  86.      */  
  87.     private static String Part2CN(String partValue,boolean bInsertZero) {  
  88.         //使用正则表达式,去除前面的0  
  89.         partValue = partValue.replaceFirst("^0+""");  
  90.         int len = partValue.length();  
  91.         if (len == 0)  
  92.             return "零";  
  93.         StringBuffer sbResult = new StringBuffer();  
  94.         int digit;  
  95.         String[] CN_Carry = new String[] { """拾""佰""仟" };  
  96.         for (int i = 0; i < len; i++) {  
  97.             digit = Integer.parseInt(partValue.substring(i, i + 1));  
  98.             if (digit != 0) {  
  99.                 sbResult.append(CN_Digits[digit]);  
  100.                 sbResult.append(CN_Carry[len - 1 - i]);  
  101.             } else {  
  102.                 // 若不是最后一位,且下不位不为零,追加零  
  103.                 if (i != len - 1  
  104.                         && Integer.parseInt(partValue.substring(i + 1, i + 2)) != 0)  
  105.                     sbResult.append("零");  
  106.             }  
  107.         }  
  108.         if(bInsertZero && len!=4)sbResult.insert(0"零");  
  109.         return sbResult.toString();  
  110.     }  

注:上面的代码不是我自己写的,是在一篇博客中看到的,希望分享给大家。

分享到:
评论

相关推荐

    mysql函数,将数字金额转成人民币大写

    将数字金额转成人民币大写,如1999.00,转为:壹仟玖佰玖拾玖元整;2000.00,转为:贰仟元整;2000.01,转为:贰仟元零壹分

    人民币数字转换成汉字大写

    人民币数字转换成汉字大写 android Java 运行效率

    数字转成人民币大写代码

    这段代码是用于将数字转换为中文大写的人民币表示方式,主要应用于财务软件或者与货币相关的程序中,方便在中文环境中准确地表示金额。这个函数名为`GetChinaNum`,接收4个参数:`otherNum`、`isRMB`、`numOption`和...

    数字转化人民币大写

    在excel中输入数字转换成人民币大写,在excel中输入数字转换成人民币大写,在excel中输入数字转换成人民币大写

    java实现将数字转换成人民币大写

    【Java实现将数字转换成人民币大写】的代码主要涉及了将数字转化为中文大写汉字的逻辑,这对于财务系统和报表生成来说是非常重要的功能。在Java中,这个过程可以通过自定义类来实现,例如创建一个名为`Rmb`的类。...

    将数字转成人民币汉字的方法

    此资源是一个java类代码可以将数字转成人民币汉字的方法封装在一个class类中

    Java人民币金额数字转换成大写

    本文将详细介绍如何使用 Java 实现人民币金额数字转换成大写的解决方案。 Java 中的 NumberFormat 类 在 Java 中,NumberFormat 类是用于格式化数字的类。它提供了多种格式化方式,例如整数、浮点数、货币等。...

    excel中数字自动转换成人民币大写文字

    在Excel中,将数字转换为人民币大写文字是一项常见的需求,尤其在财务报表或发票制作时更为重要。人民币大写的规范格式包括“壹”、“贰”等汉字,确保了金额的准确性和专业性。以下是一些关于如何在Excel中实现这一...

    JS将数字转换为大写汉字人民币

    JS将数字转换为大写汉字人民币

    数字转换成人民币大写程序代码

    数字转换成人民币大写

    java 阿拉伯数字转换成人民币的工具类

    java编写的 阿拉伯数字转换成相应的人民币汉字类

    java中把数字转化为人民币大写形式

    总的来说,将数字转化为人民币大写形式是Java编程中的一个实用技巧,涉及到数字与字符串的转换、位运算以及特殊规则的理解和应用。通过理解和实践这个过程,可以增强对Java字符串操作和逻辑处理的理解。

    DELPHI 数字转换人民币函数

    接着,它通过字符串操作将阿拉伯数字转换为中文大写,并添加相应的位数标识,如"分"、"角"、"元"、"拾"、"佰"等。然而,这个函数存在一个问题,即对于特定的0值处理不够准确,如100会被错误地转换为“壹佰零拾零元整...

    C#数字转人民币大写

    在编程领域,尤其是在开发财务软件或者处理金融数据时,经常需要将数字转换成人民币的大写形式,以便符合中国的会计规范和防止篡改。C#作为.NET框架中的主要编程语言,提供了丰富的字符串处理功能来实现这一需求。...

    C# 将数字转换成大写人民币 调用微软语音引擎SAPI.SpVoice

    在IT领域,尤其是在编程实践中,将数字转换成大写人民币是一种常见的需求,特别是在财务软件或者银行系统的开发中。本文将详细讲解如何利用C#语言,结合微软的语音引擎SAPI.SpVoice来实现这一功能,并讨论如何调用...

    阿拉伯数字转换成人民币(菜鸟java版 )

    NULL 博文链接:https://zhangshangfeng.iteye.com/blog/1599146

    数字转换成人民币大写

    数字转换成大写人民币,支持小数点后两位的转换。很好用哦

    人民币数字转换成汉字

    人民币数字转换成汉字,小数点后面保留两位数字,保存到分

    java 数字转化为人民币大写

    为了将数字转换为汉字,首先需要定义两个基本的数组:`RMB`和`unit`。`RMB`数组用于存储数字0至9对应的汉字,如“零”、“壹”、“贰”等;`unit`数组则用于存储货币单位,如“角”、“分”、“圆”、“拾”等,这些...

Global site tag (gtag.js) - Google Analytics