业务场景
1.在人事业务系统开发的报表打印文书时经常需要将人民币数值转换为大写, 所以用java写了一个通用的大写转换函数。 为了更加方便调用函数的参数使用字符串类型。例如:825.45 转换后:捌佰贰拾伍元肆角伍分
2.在人事业务系统中经常把日期用汉字大写表示,为了方便调用函数,也是使用字符串类型。例如:2018 转换后:二〇一八

下面为java代码

public class Data2Zh {final static private String NUMBER[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };final static private String NUMBER2[] = { "〇", "一", "二", "三", "四", "五", "六", "七", "八", "九" };final static private String CBit[] = { "", "拾", "佰", "仟" };/** 将数值大写*/public static String capitalization(String szNum) {StringBuilder resstr = new StringBuilder();String tmpstr = szNum.trim();int sl = tmpstr.length();int sp = 0;int dotpos = tmpstr.indexOf('.');if (dotpos != -1) {while (sl > 1 && tmpstr.charAt(sl - 1) == '0')sl--;if (tmpstr.charAt(sl - 1) == '.')sl--;if (sl != tmpstr.length()) {tmpstr = tmpstr.substring(0, sl);}} elsedotpos = sl;if (sl < 1)return NUMBER[0];if (tmpstr.charAt(0) == '-') {resstr.append("负");sp = 1;}String integerNum = tmpstr.substring(sp, dotpos - sp);String decimalNum = "";if (dotpos + 1 < sl)decimalNum = tmpstr.substring(dotpos + 1);sl = integerNum.length();sp = 0;while (sp < sl && integerNum.charAt(sp) == '0')sp++;if (sp > 0)integerNum = integerNum.substring(sp);int inl = integerNum.length();if (inl > 0) {int h = (inl - 1) % 4;int j = (inl - 1) / 4 + 1;sp = 0;boolean allzero = false;boolean preallzero = false;for (; j > 0; j--) {int k = h;h = 3;boolean preiszero = allzero;allzero = true;for (; k >= 0; k--, sp++) {if (integerNum.charAt(sp) == '0')preiszero = true;else {allzero = false;if (preiszero)resstr.append("零");preiszero = false;resstr.append(NUMBER[(byte) (integerNum.charAt(sp)) - 48]).append(CBit[k]);}} // end for kif (/* j!=0 && */ j % 2 == 0) {if (!allzero)resstr.append("万");} else {if (!allzero || !preallzero) {int repyi = j / 2;for (int i = 0; i < repyi; i++)resstr.append("亿");}}preallzero = allzero;} // end for j} elseresstr.append("零");int dnl = decimalNum.length();if (dnl > 0) {resstr.append("点");for (int i = 0; i < dnl; i++) {resstr.append(NUMBER[(byte) (decimalNum.charAt(i)) - 48]);}}return resstr.toString();}/** 获得某一位上的数值,如果 nBit<0 则获得小数点后面的位数*/static public char getNumByte(String szNum, int nBit) {int sl = szNum.length();int nPos = 0;while (nPos < sl && szNum.charAt(nPos) != '.')nPos++;if (nBit < 0)nPos = nPos - nBit;elsenPos = nPos - nBit - 1;if (nPos < 0 || nPos >= sl)return '0';return szNum.charAt(nPos);}public static String rmbChange(String rmb) {return capitalization((rmb.indexOf('.') >= 0 ? rmb.substring(0, rmb.indexOf('.')) : rmb)) + "元"+ capitalization(String.valueOf(getNumByte(rmb, -1))) + "角"+ capitalization(String.valueOf(getNumByte(rmb, -2))) + "分";}/** 仅仅是把 0~9 转换为 "〇","一","二","三","四","五","六","七","八","九"*/public static String changeCN(String szNum) {StringBuilder sb = new StringBuilder();String str = szNum.trim();int sl = str.length();int sp = 0;if (sl < 1)return NUMBER2[0];for (; sp < sl; sp++)if (str.charAt(sp) >= '0' && str.charAt(sp) <= '9')sb.append(NUMBER2[str.charAt(sp) - '0']);elsesb.append(str.charAt(sp));return sb.toString();}public static void main(String[] args) {System.out.println(rmbChange("825.45"));System.out.println(changeCN("2018"));}
}

java实现数字转换人民币中文大写工具相关推荐

  1. js将数字转换成中文大写

    //完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五.const toChinesNum = ( ...

  2. C语言-如何将用户输入的金额数字转换成中文大写?

    实战: 如何将用户输入的金额数字转换成中文大写? #include <stdio.h>int main() {// 输入金额转换成大写int money; // 输入数字int money ...

  3. JavaScript:将输入的一串数字转换成中文大写,最高可写12位(千亿)

    将输入的一串数字转换成中文大写,最高可写12位(千亿) 例:输入:10000,输出:壹万 输入:10010,输出:壹万零壹拾 源码: function toChineseBig(num) {// 将接 ...

  4. 将数字转换成中文大写的算法

    //名称:ConvertSignCap   //参数:number   //返回:CapNumber   //描述:将传入的单个数字转换成中文大写形式   //创建人:刘权 2004-11-16    ...

  5. python数字转换成中文大写

    python数字转换成中文大写 代码 #-*- coding:utf-8 -*- count_map = {1:1, 2:10, 3:100, 4:1000, 5:10000} #用来统计传入数值的级 ...

  6. python 把数字转换成中文大写

    def conversionString(intnumber):'''把数字转换成中文大写,例如:1->一 ,25->二十五,49->四十九Parameters----------i ...

  7. 货币数字转换成中文大写的函数

    这个函数与以前其他网友提供的结构大不相同, 是一个从高位到低位的算法, 更加符合语言习惯. //---------------------------------------------------- ...

  8. Java实现将数字转换成中文大写

    /** *程序功能:支持将仟亿数字转换成中文数字表示,如(110.12 转换成壹佰壹拾元壹角贰分) *算法思路:将数字,分成整数部分和小数部分(小数部分四舍五入到两位),分别进行转换,然后将转换后的结 ...

  9. python数字转换成中文大写_python初学者笔记(2):阿拉伯数字转换成中文大写

    题:输入一个数字,转换成中文大写的写法 可运行的程序(Python 2.7.9): 1 #-*- coding: utf-8 -*- #在python2的py文件里面写中文,必须要添加一行声明文件编码 ...

最新文章

  1. 网站seo不能错过这几点!
  2. axure实现复选框全选_AxureRP8实战手册-案例73(全选与取消全选效果)
  3. fst java_java快速序列化库FST
  4. get和post的联系与区别
  5. Python 爬取了马蜂窝的出行数据,告诉你这个夏天哪里最值得去!
  6. 壹动官网上线新增产品【等保】
  7. jdbctemplate 批量删除_10秒3步批量去除PDF水印
  8. c++ 哈希_Redis源码解析十一--Hash键实现Redis 哈希键命令实现(t_hash)
  9. SVN工作副本已经锁定错误的解决方法
  10. python中函数的参数传递
  11. 直接使用临时变量导致的一个bug记录
  12. HMM学习笔记_2(从一个实例中学习HMM前向算法)
  13. cvLoadImage()的调用参数设置
  14. (35)pycharm在debug模式下一直显示collecting data
  15. win7修复计算机卡了,win7升级到win10后突然很卡的修复方法(图文)
  16. 企业u盘系统服务器,服务器u盘装系统
  17. Hulu推荐 | 《破产姐妹》Max演员新剧《娃娃脸》
  18. PAT 1044 火星数字
  19. 数据分析师,如何向亲友解释自己的工作
  20. Vulkan 究竟是什么

热门文章

  1. 前端开发实现点击出现不断向上可变色心形的效果
  2. 1:微服务和Spring Cloud Alibaba介绍
  3. 几率大的Redis面试题(含答案)
  4. Ubuntu下安装并复现HAWQ3全流程+ImageNet完整数据集的处理
  5. “王者荣耀”中的常用英语
  6. 蓝牙耳机连接导致软件刷新或者崩溃 解决办法
  7. 宏基 F5 572g 预装win10改win7
  8. 华为荣耀平板6支持鸿蒙OS,华为新平板提上日程,首发鸿蒙系统,游戏体验升级...
  9. Speedoffice(Excel)如何使用Sumifs函数?
  10. IEEE 802.11