Java数字转换工具类

简介

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

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 数字转中文_使用Java将阿拉伯数字转换为中文数字(适配小数转换)相关推荐

  1. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

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

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

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

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

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

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

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

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

  6. 使用Java将阿拉伯数字转换为中文数字(适配小数转换)

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

  7. java 生成pdf 乱码_利用java处理fop导出pdf的中文乱码问题解决方案

    本文的作用是,生成带中文的加密pdf格式的文件,防止被人修改. 在项目下建立docbook-xsl, fo-res, out, sample四个文件夹 docbook-xsl目录: 放从sourcef ...

  8. java判断字符个数_使用Java判断字符串中的中文字符数量

    Java判断一个字符串str中中文的个数,经过总结,有以下几种方法(全部经过验证),可根据其原理判断在何种情况下使用哪个方法: 1. 1 char[] c =str.toCharArray();2 f ...

  9. java mail 收 附件_使用 JavaMail 收发邮件,解决中文附件问题

    几天来一直在开发一个项目,其中一部分需要用 JavaMail 收发邮件,于是就在网上找了一些相关的源代码,最后经过整理和修改,终于好使了,希望能够给使用 JavaMail 收发邮件的朋友提供一个参考 ...

  10. java截取中文_按字节截取混有中文汉字的字符串 中英文字符串截取

    [java]代码库import java.io.UnsupportedEncodingException; public class CutString { /** * 判断是否是一个中文汉字 * * ...

最新文章

  1. SpringBoot中使用thymeleaf的switch来实现if-else if -else的效果
  2. 前端学习(142):行级标签和块级标签
  3. epoll怎么实现的
  4. 百面机器学习——第一章特征工程
  5. Netty工作笔记0072---Protobuf内容小结
  6. makefile高级应用
  7. 推荐系统评估:你的推荐系统足够好吗?
  8. Pwn2Own 2021奥斯汀黑客大赛公布类别、目标及奖金
  9. Linux配置http代理
  10. 计算机组成原理—Cache和主存的映射模式
  11. delphi html 登录,delphi 几个实用的HTML解析函数
  12. (老机福音,重装后恢复软件设置)Ghost_XP_战神 V11 老机版
  13. Mac配置环境变量的位置
  14. mysql省市联动_sql全国 省市 联动级联
  15. html盒子里的图片居中,文本在盒子中水平、垂直居中(图片与文本居中)、多行文本垂直居中...
  16. 导致锁表的原因及解决方法
  17. 【安全知识分享】工程项目夏季、雨季、夜间、防汛施工安全培训教育(附下载)
  18. 开通公众号啦:java4all
  19. 地平线4显示与服务器通讯发生错误,地平线4加载失败发生不明错误的解决方法 - 系统家园...
  20. Unity实战之打靶游戏

热门文章

  1. 正则 纳税号_正则表达式号码靓号类型判断代码
  2. 大上显示器,你的护眼利器
  3. Linux for嵌套if的格式,Shell篇(2)-条件语句if及循环语句 for , while , unti
  4. re2正则表达式引擎学习(四)
  5. POJ3764 The xor-longest Path
  6. Zigbee无线模块配置
  7. 2022-2028全球石油管材接头行业调研及趋势分析报告
  8. 考研日语线上笔记(五):中级日语语法总结20课(11~20)
  9. omnet++ tictoc1 实例分析
  10. php mysql begin_PHP mysqli_begin_transaction() 函数用法及示例