阿拉伯数字转中文(汉字)数字
/** * 数字工具类型 * @author rubekid * */ public class NumberUtils { private final static String[] GROUP_UNITS = {"", "万", "亿", "兆"}; private final static String[] BASE_UNITS = { "", "十", "百", "千" }; private final static char[] SIMPLIFIED_NUMBERIC = { '零', '一', '二', '三', '四', '五', '六', '七', '八', '九' }; private final static char[] TRADITIONAL_NUMBERIC = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' }; /** * 转为中文数字 * @param number 数值 * @param isTraditional 是否转为繁体 * @return */ public static String toChinese(long number, boolean isTraditional){ char[] numberic = isTraditional ? TRADITIONAL_NUMBERIC : SIMPLIFIED_NUMBERIC; if(number==0){//判断是否为0 return String.valueOf(numberic[0]); } String str = String.valueOf(number); char[] numbers = str.toCharArray(); int len = str.length(); //统计连续出现的0 int zeroCount = 0; StringBuffer stringBuffer = new StringBuffer(); for(int i = 0; i<len ;i++){ int value = Integer.parseInt(String.valueOf(numbers[i])); int index = len - i - 1; //在分组中的下标 int _index = index % 4; if(value == 0){ zeroCount++; if((_index == 0 && zeroCount < 4 ) || (index % 8 == 0 && zeroCount < 8)){ stringBuffer.append(getGroupUnit(index)); zeroCount = 0; } } else{ if(zeroCount > 0){ stringBuffer.append(numberic[0]); } if(_index == 0){ stringBuffer.append(numberic[value] + BASE_UNITS[_index] + getGroupUnit(index)); zeroCount = 0; } else{ //调整以“一十”开头的不需要出现“一” 如:100000 读“十万”而不是“一十万” if(_index == 1 && i==0 && value== 1){ stringBuffer.append(BASE_UNITS[_index]); } else{ stringBuffer.append(numberic[value] + BASE_UNITS[_index]); } } zeroCount = 0; } } return stringBuffer.toString(); } /** * 转为中文数字 * @param number 数值 * @return */ public static String toChinese(long number){ return toChinese(number, false); } /** * 转为中文数字 * @param number 数值 * @param isTraditional 是否转为繁体 */ public static String toChinese(int number, boolean isTraditional){ return toChinese((long)number, isTraditional); } /** * 转为中文数字 * @param number 数值 */ public static String toChinese(int number){ return toChinese(number, false); } /** * 获取分组单位 * @param index * @return */ private static String getGroupUnit(int index){ String groupUnit = GROUP_UNITS[(index / 4) % 2]; if(index % 8 == 0 && index > 0){ groupUnit += GROUP_UNITS[(index / 8) +1]; } return groupUnit; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)