java 数字转中文_使用Java将阿拉伯数字转换为中文数字(适配小数转换)
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将阿拉伯数字转换为中文数字(适配小数转换)相关推荐
- java项目----教务管理系统_基于Java的教务管理系统
java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...
- 将阿拉伯数字转换为中文大写数字 —— pyhton实现
将阿拉伯数字转换为中文大写数字 -- pyhton实现 在银行的日常业务中,常常需要用到将阿拉伯数字转换为中文大写数字的 功能.这次实验将编写一个程序,将用户输入的阿拉伯数字代表的金额,转换为大写数字 ...
- 将阿拉伯数字转换为中文数字: 123 -> 一二三
//将阿拉伯数字转换为中文数字: 123 -> 一二三String getCNNum(int srcNum) {/*** 汉字*/String[] CN_CHARS = new String[] ...
- Python:阿拉伯数字转换为中文大写数字(金额的读数规则)
萌萌帮班里同学做了一个python的编程作业,正好回顾一下python基础知识,以下源码和思考过程,代码全部原创. IDE:pycharm python版本:python3.7 ''' 实验目的:在银 ...
- VB 阿拉伯数字转换为中文大写数值函数
Private Function CChinese(StrEng As String) As String If Not IsNumeric(StrEng) Or StrEng Like " ...
- 使用Java将阿拉伯数字转换为中文数字(适配小数转换)
Java数字转换工具类 本文借鉴了该博主所写的工具类 传送门:https://blog.csdn.net/wanlin77/article/details/88853816 初级码农一枚,非常欢迎优化 ...
- java 生成pdf 乱码_利用java处理fop导出pdf的中文乱码问题解决方案
本文的作用是,生成带中文的加密pdf格式的文件,防止被人修改. 在项目下建立docbook-xsl, fo-res, out, sample四个文件夹 docbook-xsl目录: 放从sourcef ...
- java判断字符个数_使用Java判断字符串中的中文字符数量
Java判断一个字符串str中中文的个数,经过总结,有以下几种方法(全部经过验证),可根据其原理判断在何种情况下使用哪个方法: 1. 1 char[] c =str.toCharArray();2 f ...
- java mail 收 附件_使用 JavaMail 收发邮件,解决中文附件问题
几天来一直在开发一个项目,其中一部分需要用 JavaMail 收发邮件,于是就在网上找了一些相关的源代码,最后经过整理和修改,终于好使了,希望能够给使用 JavaMail 收发邮件的朋友提供一个参考 ...
- java截取中文_按字节截取混有中文汉字的字符串 中英文字符串截取
[java]代码库import java.io.UnsupportedEncodingException; public class CutString { /** * 判断是否是一个中文汉字 * * ...
最新文章
- SpringBoot中使用thymeleaf的switch来实现if-else if -else的效果
- 前端学习(142):行级标签和块级标签
- epoll怎么实现的
- 百面机器学习——第一章特征工程
- Netty工作笔记0072---Protobuf内容小结
- makefile高级应用
- 推荐系统评估:你的推荐系统足够好吗?
- Pwn2Own 2021奥斯汀黑客大赛公布类别、目标及奖金
- Linux配置http代理
- 计算机组成原理—Cache和主存的映射模式
- delphi html 登录,delphi 几个实用的HTML解析函数
- (老机福音,重装后恢复软件设置)Ghost_XP_战神 V11 老机版
- Mac配置环境变量的位置
- mysql省市联动_sql全国 省市 联动级联
- html盒子里的图片居中,文本在盒子中水平、垂直居中(图片与文本居中)、多行文本垂直居中...
- 导致锁表的原因及解决方法
- 【安全知识分享】工程项目夏季、雨季、夜间、防汛施工安全培训教育(附下载)
- 开通公众号啦:java4all
- 地平线4显示与服务器通讯发生错误,地平线4加载失败发生不明错误的解决方法 - 系统家园...
- Unity实战之打靶游戏
热门文章
- 正则 纳税号_正则表达式号码靓号类型判断代码
- 大上显示器,你的护眼利器
- Linux for嵌套if的格式,Shell篇(2)-条件语句if及循环语句 for , while , unti
- re2正则表达式引擎学习(四)
- POJ3764 The xor-longest Path
- Zigbee无线模块配置
- 2022-2028全球石油管材接头行业调研及趋势分析报告
- 考研日语线上笔记(五):中级日语语法总结20课(11~20)
- omnet++ tictoc1 实例分析
- php mysql begin_PHP mysqli_begin_transaction() 函数用法及示例