中文表达整数:
/**
* 将小于1万万亿的整数表达为中文,传统中文标准数字单位为:个,十,
* 佰,仟,万,亿,兆,京,后面四个都是以万为进的单位,但兆和京在现
* 代很少使用,故大于亿均以万亿为单位。
*
* @param n 小于1万万亿的整数
* @return 对应的中文习惯表达的数值字符串串。
*/
public static String convertNumToChinese(long n) {
if (n >= (long) 1e+8 * (long) 1e+8) {
return "";
}
if (n == 0) {
return CHINESE_NUMBERS[0];
}
StringBuffer sb = new StringBuffer();
int yi = 0, wan = 0, qian = 0, wanYi = 0;
if (n >= 100000000) {
yi = (int) (n / 100000000);
wan = (int) ((n - (long) yi * 100000000) / 10000);
qian = (int) (n % 10000);
} else if (n >= 10000) {
wan = (int) (n / 10000);
qian = (int) (n % 10000);
} else if (n >= 0) {
qian = (int) n;
}
if (yi != 0) {
wanYi = yi / 10000;
yi = yi - wanYi * 10000;
if (wanYi > 0) {
sb.append(cunvertNumForLessThanTenThousand(wanYi)).append(CHINESE_NUMBER_UNITS[4]);
}
if (yi < 1000) {
sb.append(CHINESE_NUMBERS[0]);
}
sb.append(cunvertNumForLessThanTenThousand(yi)).append(CHINESE_NUMBER_UNITS[8]);
}
if ((yi != 0 && wan < 1000 && wan > 0) ||
(wan == 0 && yi != 0)) {
sb.append(CHINESE_NUMBERS[0]);
}
if (wan > 0) {
sb.append(cunvertNumForLessThanTenThousand(wan)).append(CHINESE_NUMBER_UNITS[4]);
}
if (wan != 0 && qian < 1000 && qian > 0) {
sb.append(CHINESE_NUMBERS[0]);
}
sb.append(cunvertNumForLessThanTenThousand(qian)).append(CHINESE_NUMBER_UNITS[0]);
return sb.toString();
}
public final static String[] CHINESE_NUMBERS = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
public final static String[] CHINESE_NUMBER_UNITS = {"", "十", "百", "千", "万", "十万", "百万", "千万", "亿"};
/**
* 将小于1万的整数为以中文习惯来表达.
*
* @param n 小于1万的整数
* @return 对应的中文习惯表达的数值字符串
*/
private static String cunvertNumForLessThanTenThousand(int n) {
if (n < 0 || n > 9999) {
return null;
}
if (n == 0) {
return "";
}
StringBuffer sb = new StringBuffer();
int ge = 0, shi = 0, bai = 0, qian = 0;
// wan = n / 10000;
qian = n / 1000;
bai = (n - qian * 1000) / 100;
shi = (n - qian * 1000 - bai * 100) / 10;
ge = n % 10;
// if (wan != 0) {
// sb.append(CHINESE_NUMBERS[wan]).append(CHINESE_NUMBER_UNITS[4]);
// }
if (qian != 0) {
sb.append(CHINESE_NUMBERS[qian]).append(CHINESE_NUMBER_UNITS[3]);
}
if (bai != 0) {
sb.append(CHINESE_NUMBERS[bai]).append(CHINESE_NUMBER_UNITS[2]);
} else if (qian != 0 && !(shi == 0 && ge == 0)) {
sb.append(CHINESE_NUMBERS[0]);
}
if (shi != 0) {
sb.append(CHINESE_NUMBERS[shi]).append(CHINESE_NUMBER_UNITS[1]);
} else if (bai != 0 && ge != 0) {
sb.append(CHINESE_NUMBERS[0]);
}
if (ge != 0) {
sb.append(CHINESE_NUMBERS[ge]);
}
return sb.toString();
}
中文表达金额:
/**
* 阿拉伯数据格式金额转中文大写金额。基于他人代码改进而来,原代码存在浮点精度bug,原作者未知。
*
* @param value
* @return
*/
public static String numMonyToZhBig(BigDecimal value) {
char[] hunit = {'拾', '佰', '仟'};//段内位置表示
char[] vunit = {'万', '亿'};//段名表示
char[] digit = {'零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'};//数字表示
value = value.setScale(2, RoundingMode.HALF_UP);
String valStr = value.multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_UP).toString();//转化成字符串
String head = valStr.substring(0, valStr.length() - 2);//取整数部分
String rail = valStr.substring(valStr.length() - 2);//取小数部分
String prefix = "";//整数部分转化的结果
String suffix = "";//小数部分转化的结果
//处理小数点后面的数
if (rail.equals("00")) {//如果小数部分为0
suffix = "整";
} else {
suffix = digit[rail.charAt(0) - '0'] + "角" + digit[rail.charAt(1) - '0'] + "分";//否则把角分转化出来
}
//处理小数点前面的数
char[] chDig = head.toCharArray();//把整数部分转化成字符数组
char zero = '0';//标志'0'表示出现过0
byte zeroSerNum = 0;//连续出现0的次数
for (int i = 0; i < chDig.length; i++) {//循环处理每个数字
int idx = (chDig.length - i - 1) % 4;//取段内位置
int vidx = (chDig.length - i - 1) / 4;//取段位置
if (chDig[i] == '0') {//如果当前字符是0
zeroSerNum++;//连续0次数递增
if (zero == '0') {//标志
zero = digit[0];
} else if (idx == 0 && vidx > 0 && zeroSerNum < 4) {
prefix += vunit[vidx - 1];
zero = '0';
}
continue;
}
zeroSerNum = 0;//连续0次数清零
if (zero != '0') {//如果标志不为0,则加上,例如万,亿什么的
prefix += zero;
zero = '0';
}
prefix += digit[chDig[i] - '0'];//转化该数字表示
if (idx > 0) prefix += hunit[idx - 1];
if (idx == 0 && vidx > 0) {
prefix += vunit[vidx - 1];//段结束位置应该加上段名如万,亿
}
}
if (prefix.length() > 0) prefix += '圆';//如果整数部分存在,则有圆的字样
return prefix + suffix; //返回正确表示
}
分享到:
相关推荐
首先,TuneUp Utilities 2011的核心功能之一是系统优化。它包含了一系列智能工具,如启动项管理、磁盘碎片整理、内存优化等,可以帮助用户调整系统设置,减少不必要的后台进程,提高电脑启动速度和整体运行效率。...
UtilitiES UtilitiES UtilitiES UtilitiES UtilitiES
卸载管理是Magic Utilities的核心功能之一。它能帮助用户快速、彻底地卸载不常用或者不需要的程序,避免传统卸载方式可能遗留的注册表项和文件残留,从而保持系统的整洁和高效。通过这个功能,用户可以轻松找到并...
综上所述,TuneUp Utilities 2010官方简体中文注册版是一款强大的系统维护和优化工具,它集成了多种实用功能,能够帮助用户全面优化和保护他们的计算机系统,提高电脑的使用体验。通过安装和应用注册补丁,用户可以...
在Python编程语言中,"utilities"通常指的是一个包含各种通用功能和辅助方法的模块或库。这样的模块设计目的是为了提高代码的复用性,减少重复编写相同或相似功能的代码,提升开发效率。"utilities:通用实用程序模块...
### MySQL Utilities 中文手册知识点概览 #### 一、引言 MySQL Utilities 是一套由 MySQL 官方提供的工具集合,旨在简化 MySQL 数据库的管理和维护工作。这些工具可以帮助数据库管理员(DBA)更高效地完成一系列复杂...
Norton Utilities V5.0,作为一款在DOS操作系统时代极具影响力的软件,它集合了一系列强大的磁盘管理和系统优化工具,为当时的计算机用户提供了无与伦比的便捷性与效率。这个版本在英文环境下运行,其功能丰富多样,...
TuneUp Utilities是来自德国的世界级系统优化软件,在2010版本时曾取中文名趣能系统优化专家,可能官方觉得这个名字太土,所以在TuneUp Utilities最新版本中取消了中文命名。由于TuneUp Utilities功能强大,使用简单...
"MP3 Player Utilities v3.57" 是一个专为这类设备设计的软件工具集,旨在帮助用户进行各种操作和维护,例如固件升级、音乐管理、设备优化等。这个版本3.57可能是该软件的稳定版或改进版,提供了比之前版本更多的...
TuneUp Utilities 2011 简体中文版,做一次全面优化或者一键优化 一键优化包含注册表纠错清理.注册表碎片整理.删除无效的快捷方式.删除临时文件.优化电脑开关机速度.对磁盘进行碎片整理.让电脑一键修复所有错误,减肥...
TuneUp Utilities 2011简体中文版作为一款备受用户喜爱的系统优化软件,提供了全面且深入的优化功能,帮助用户提升计算机性能,解决常见的系统问题。本文将深入探讨TuneUp Utilities 2011的主要功能、使用场景以及...
【TuneUp Utilities 2011简体中文版】是一款专为Windows用户设计的系统优化工具,旨在提升计算机性能、清理系统垃圾、改善启动速度和整体稳定性。该软件集成了多种实用功能,包括系统清理、性能提升、磁盘碎片整理、...
Norton Utilities 8.0是一款由Symantec公司开发的系统优化和维护工具,它在DOS环境下运行,为用户提供了一系列强大的系统维护功能。这款软件的中文和英文两个版本为用户提供了多语言选择,便于不同语言背景的用户...
全新的TuneUp Utilities™ 2012节能模式可以通过一次单击,将处理器、图形卡、 WiFi适配器和显示器的耗电量降低到最低限度,延长笔记本和上网本电脑的电池寿命。TuneUp Utilities™ 2012比Windows®电源计划能多节省...
UTIlITIES UTIlITIES UTIlITIESOK
《Norton Utilities激活码...总的来说,Norton Utilities 15是一款强大的系统优化工具,通过合理的激活码获取和使用,可以有效提升电脑性能,保障系统稳定。在享受其带来的便利时,也要注意合法合规,避免潜在的风险。
TuneUp Utilities是一款知名的系统优化与维护软件,主要针对Windows操作系统,提供一系列工具以提升电脑性能、清理无用文件、优化设置以及修复潜在问题。2013版是该系列的一个重要版本,包含了多种实用功能,旨在...
TuneUp Utilities 2009是一款著名的系统优化软件,专为Windows操作系统设计,旨在提升电脑性能、改善系统稳定性和节省硬盘空间。它集合了多种实用工具,帮助用户轻松管理、调整和维护他们的计算机。 一、主要功能 ...
### Teradata Tools and Utilities知识点详解 ...综上所述,《Teradata Tools and Utilities》不仅是一本详细的用户手册,更是Teradata数据仓库解决方案的核心组成部分之一,对于理解和使用Teradata工具具有重要意义。
总之,DameWare NT Utilities 6.8.1.4汉化版是一个强大的远程系统管理工具,其全面的功能和友好的中文界面,使得系统管理员在进行日常维护和故障排查时能更加高效、便捷。无论是企业内部还是IT服务提供商,都将从中...