Java数字转换工具类

本文借鉴了该博主所写的工具类
传送门:https://blog.csdn.net/wanlin77/article/details/88853816
初级码农一枚,非常欢迎优化、交流

简介

该工具类可以将整数、小数、负数转换为中文的数字,如:

  • 0 ——>
  • 1 ——>
  • 2.1 ——> 二点一
  • -2.1 ——> 负二点一

具体代码如下

import java.math.BigDecimal;/*** 数字转换中文** @author huangshuai* @date 2019/11/22 0022*/
public class NumberUtil {private NumberUtil() { }/*** 中文数字*/private static final String[] CN_NUM = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};/*** 中文数字单位*/private static final String[] CN_UNIT = {"", "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千"};/*** 特殊字符:负*/private static final String CN_NEGATIVE = "负";/*** 特殊字符:点*/private static final String CN_POINT = "点";/*** int 转 中文数字* 支持到int最大值* * @param intNum 要转换的整型数* @return 中文数字*/public static String int2chineseNum(int intNum) {StringBuffer sb = new StringBuffer();boolean isNegative = false;if (intNum < 0) {isNegative = true;intNum *= -1;}int count = 0;while(intNum > 0) {sb.insert(0, CN_NUM[intNum % 10] + CN_UNIT[count]);intNum = intNum / 10;count++;}if (isNegative)sb.insert(0, CN_NEGATIVE);return sb.toString().replaceAll("零[千百十]", "零").replaceAll("零+万", "万").replaceAll("零+亿", "亿").replaceAll("亿万", "亿零").replaceAll("零+", "零").replaceAll("零$", "");}/*** bigDecimal 转 中文数字* 整数部分只支持到int的最大值* * @param bigDecimalNum 要转换的BigDecimal数* @return 中文数字*/public static String bigDecimal2chineseNum(BigDecimal bigDecimalNum) {if (bigDecimalNum == null)return CN_NUM[0];StringBuffer sb = new StringBuffer();//将小数点后面的零给去除String numStr = bigDecimalNum.abs().stripTrailingZeros().toPlainString();String[] split = numStr.split("\\.");String integerStr = int2chineseNum(Integer.parseInt(split[0]));sb.append(integerStr);//如果传入的数有小数,则进行切割,将整数与小数部分分离if (split.length == 2) {//有小数部分sb.append(CN_POINT);String decimalStr = split[1];char[] chars = decimalStr.toCharArray();for (int i = 0; i < chars.length; i++) {int index = Integer.parseInt(String.valueOf(chars[i]));sb.append(CN_NUM[index]);}}//判断传入数字为正数还是负数int signum = bigDecimalNum.signum();if (signum == -1) {sb.insert(0, CN_NEGATIVE);}return sb.toString();}
}

使用Java将阿拉伯数字转换为中文数字(适配小数转换)相关推荐

  1. 将阿拉伯数字转换为中文数字: 123 -> 一二三

    //将阿拉伯数字转换为中文数字: 123 -> 一二三String getCNNum(int srcNum) {/*** 汉字*/String[] CN_CHARS = new String[] ...

  2. python数字转中文_阿拉伯数字转换为中文数字的python实现

    #!/usr/bin/python # -*- coding: utf-8 -*- ''' 脚本功能:阿拉伯数字与中文数字转换 输入参数:阿拉伯数字,不带符号 初次编写日期:2018-07-24 说明 ...

  3. 中文转数字 java_java将阿拉伯数字转换为中文数字

    1.转换为大写中文数字,即钱的金额,http://blog.csdn.net/billfranck/article/details/4470898 http://www.cnblogs.com/hon ...

  4. java实现 阿拉伯数字转换为汉字数字 算法

    package test; public class NumberFormatTest { static String[] units = { "", "十", ...

  5. 将阿拉伯数字转换为中文大写数字 —— pyhton实现

    将阿拉伯数字转换为中文大写数字 -- pyhton实现 在银行的日常业务中,常常需要用到将阿拉伯数字转换为中文大写数字的 功能.这次实验将编写一个程序,将用户输入的阿拉伯数字代表的金额,转换为大写数字 ...

  6. Python:阿拉伯数字转换为中文大写数字(金额的读数规则)

    萌萌帮班里同学做了一个python的编程作业,正好回顾一下python基础知识,以下源码和思考过程,代码全部原创. IDE:pycharm python版本:python3.7 ''' 实验目的:在银 ...

  7. VB 阿拉伯数字转换为中文大写数值函数

    Private Function CChinese(StrEng As String) As String If Not IsNumeric(StrEng) Or StrEng Like " ...

  8. php 数字转中文函数 1转一,一个阿拉伯数字转中文数字的函数-PHP教程,PHP函数

    最近因需要,写了个"阿拉伯数字转中文数字的函数".搜索了精华区只见到一个类似的. 感觉到我的算法不错,所以贴出来共享一下 如果要用于金额的转换,对小数部分的处理要做一下修改 fun ...

  9. 制打印如下所示的n行数字金字塔_一日一技:在Python中实现阿拉伯数字加上中文数字...

    在Python 3里面,中文是可以作为变量名的,而运算符又可以重载,基于这两个特性,我们可以实现阿拉伯数字与中文数字的四则运算. 首先我们定义一个类 Num: class Num(object): d ...

最新文章

  1. opensuse x64下编译Ice源码(以编译c++为例)
  2. 【nRF51822学习教程】SDK框架分析
  3. css flexbox模型_Flexbox教程:了解如何使用CSS Flexbox编写响应式导航栏
  4. js中的时间与毫秒数互相转换,倒计时
  5. minikube start 使用Hyper-V
  6. java 泛型 泛型接口(Generic Methods)类型形参(Type Parameters)
  7. markDown用这一招实现图片并排显示
  8. 区块链支付平台技术的应用
  9. 【JAVA源码分析——Java.lang】String源码分析
  10. ASP.NET编程的十大技巧
  11. notepad html 自动格式化代码,notepad++格式化html代码
  12. FFT运算的加深理解——频谱泄露
  13. QCIF CIF 2CIF 4CIF 普及
  14. 新版电脑版微信终于可以用上小程序了
  15. 微信小程序腾讯服务器地址要购买吗,微信小程序JavaScript SDK
  16. ADC0809芯片简介
  17. pytorch怎么下载?pytorch在哪里下载?
  18. mysql8.0怎么样_MySQL8.0初体验
  19. Jetson Nano 按键切换摄像头
  20. 签名密钥和加密密钥区别?

热门文章

  1. Qt中使用QAxObject的dynamicCall和querySubObject函数操作SolidWorks的方法
  2. 计算机教室与黑板距离,教室灯具布置怎么做比较合理?
  3. DKIM、DMARC 和 SPF:设置电子邮件安全
  4. 数据结构(12)----图(遍历、最小生成树、easyX可视化)
  5. drv10893器件的使用
  6. Office在线预览及PDF在线预览的实现方式
  7. 【第3期赠书活动】〖Python 数据库开发实战 - Python与Redis交互篇⑬〗- 综合案例 - 新闻管理系统 - 编辑新闻(编辑角色权限)
  8. win7下 VMware 9.0安装 MAC OS 10.8
  9. SLAM——之G2O函数库
  10. web服务器项目背景,项目18-Web服务器配置与管理