public class Trans2RMB { /** 大写数字 */ private static final String[] NUMBERS = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; /** 整数部分的单位 */ private static final String[] IUNIT = { "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟" }; /** 小数部分的单位 */ private static final String[] DUNIT = { "角", "分", "厘" }; private static final int String = 0; /** * 得到大写金额。 */ public static String toChinese(String str) { str = str.replaceAll(",", "");// 去掉"," String integerStr;// 整数部分数字 String decimalStr;// 小数部分数字 // 初始化:分离整数部分和小数部分 if (str.indexOf(".") > 0) { integerStr = str.substring(0, str.indexOf(".")); decimalStr = str.substring(str.indexOf(".") + 1); } else if (str.indexOf(".") == 0) { integerStr = ""; decimalStr = str.substring(1); } else { integerStr = str; decimalStr = ""; } // integerStr去掉首0,不必去掉decimalStr的尾0(超出部分舍去) if (!integerStr.equals("")) { integerStr = Long.toString(Long.parseLong(integerStr)); if (integerStr.equals("0")) { integerStr = ""; } } // overflow超出处理能力,直接返回 if (integerStr.length() > IUNIT.length) { System.out.println(str + ":超出处理能力"); return str; } int[] integers = toArray(integerStr);// 整数部分数字 boolean isMust5 = isMust5(integerStr);// 设置万单位 int[] decimals = toArray(decimalStr);// 小数部分数字 return getChineseInteger(integers, isMust5) + getChineseDecimal(decimals); } /** * 整数部分和小数部分转换为数组,从高位至低位 */ private static int[] toArray(String number) { int[] array = new int[number.length()]; for (int i = 0; i < number.length(); i++) { array[i] = Integer.parseInt(number.substring(i, i + 1)); } return array; } /** * 得到中文金额的整数部分。 */ private static String getChineseInteger(int[] integers, boolean isMust5) { StringBuffer chineseInteger = new StringBuffer(""); int length = integers.length; for (int i = 0; i < length; i++) { // 0出现在关键位置:1234(万)5678(亿)9012(万)3456(元) // 特殊情况:10(拾元、壹拾元、壹拾万元、拾万元) String key = ""; if (integers[i] == 0) { if ((length - i) == 13)// 万(亿)(必填) key = IUNIT[4]; else if ((length - i) == 9)// 亿(必填) key = IUNIT[8]; else if ((length - i) == 5 && isMust5)// 万(不必填) key = IUNIT[4]; else if ((length - i) == 1)// 元(必填) key = IUNIT[0]; // 0遇非0时补零,不包含最后一位 if ((length - i) > 1 && integers[i + 1] != 0) key += NUMBERS[0]; } chineseInteger.append(integers[i] == 0 ? key : (NUMBERS[integers[i]] + IUNIT[length - i - 1])); } return chineseInteger.toString(); } /** * 得到中文金额的小数部分。 */ private static String getChineseDecimal(int[] decimals) { StringBuffer chineseDecimal = new StringBuffer(""); for (int i = 0; i < decimals.length; i++) { // 舍去3位小数之后的 if (i == 3) break; chineseDecimal.append(decimals[i] == 0 ? "" : (NUMBERS[decimals[i]] + DUNIT[i])); } return chineseDecimal.toString(); } /** * 判断第5位数字的单位"万"是否应加。 */ private static boolean isMust5(String integerStr) { int length = integerStr.length(); if (length > 4) { String subInteger = ""; if (length > 8) { // 取得从低位数,第5到第8位的字串 subInteger = integerStr.substring(length - 8, length - 4); } else { subInteger = integerStr.substring(0, length - 4); } return Integer.parseInt(subInteger) > 0; } else { return false; } } public static String getCapital(String year) { String sub = ""; for (int i = 0; i < year.length(); i++) { String s = year.substring(i, (i + 1)); int cout = Integer.parseInt(s); switch (cout) { case 0: sub += "〇"; break; case 1: sub += "一"; break; case 2: sub += "二"; break; case 3: sub += "三"; break; case 4: sub += "四"; break; case 5: sub += "五"; break; case 6: sub += "六"; break; case 7: sub += "七"; break; case 8: sub += "八"; break; case 9: sub += "九"; break; } } return sub; } public static void main(String[] args) { System.out.println(Trans2RMB.getCapital("2008")); String number = "1.23"; System.out.println(number + " " + Trans2RMB.toChinese(number)); number = "1234567890123456.123"; System.out.println(number + " " + Trans2RMB.toChinese(number)); number = "0.0798"; System.out.println(number + " " + Trans2RMB.toChinese(number)); number = "10,001,000.09"; System.out.println(number + " " + Trans2RMB.toChinese(number)); number = "sdf"; System.out.println(number + " " + Trans2RMB.toChinese(number)); } }
相关推荐
在压缩包的文件列表中,`Trans2RMB.exe`很可能是这个转换工具的可执行文件,用户可以直接运行而无需编译源代码。`Trans2RMB.bat`可能是批处理文件,用于自动化执行某些操作,比如运行可执行文件。`.ilk`和`.pdb`文件...
在给定的文件列表中,我们可以看到`Trans2RMB.java`是源代码文件,`Trans2RMB.class`是编译后的字节码文件,而`Trans2RMB.bat`可能是用于运行Java程序的批处理脚本。这表明已经有一个完整的解决方案,包括了源代码、...
process simulation 机器人仿真数据转换小插件,用来转换出软件可识别格式。
`entity2id.txt` 文件是TransE模型中的关键组成部分,它通常包含了知识图谱中所有实体及其对应的唯一标识符(ID)。这些ID用于将实体名称转化为数值形式,以便在计算中使用。文件中每一行可能包含一个实体名称和对应...
TransMac是一款专为Windows用户设计的软件,它允许用户轻松地与Apple的Mac OS系统进行交互,特别是处理与Mac相关的文件格式和磁盘操作。在标题"TransMac11.4免安装版"中,我们可以理解这个版本是11.4的TransMac,...
affine-trans-point-2d与affine-trans-pixel
2. **写入Mac磁盘**:除了读取,它还能将Windows文件写入到Mac格式化的磁盘或设备上,这对于需要在Mac和Windows之间共享数据的用户来说极其便利。 3. **刻录.dmg镜像**:软件的核心功能之一是刻录Mac OS的.dmg镜像...
2. **负采样**:对于每个正样本三元组,生成一定数量的负样本,这些负样本通常是通过随机替换头实体或尾实体得到的。 3. **损失函数计算**:使用BCE(二元交叉熵)损失函数或者 Margin-based 损失函数(如Hinge Loss...
2. **写入DMG文件**:DMG(Disk Image)是Mac OS中常见的镜像文件格式,常用于软件分发和备份。TransMac能让用户将DMG文件写入U盘或其他可移动存储设备,这对于在Windows系统中安装Mac应用或向Mac设备传输数据非常...
《 TranSE算法实现及测试详解 》 在知识图谱的研究与应用中,实体关系的表示学习是一项核心任务。TranSE(Translation-based Knowledge Graph Embedding)算法是其中的一种经典模型,它通过向量空间中的翻译操作来...
标题中的“key_trans_snake2hp_键盘设计程序_51单片机_trans单片机”揭示了这个项目的核心内容,这是一个基于51单片机的键盘设计程序,可能用于实现一个类似于经典游戏"Snake 2HP"的控制功能。在8051单片机的环境下...
系统概述可能简述了被测试软件的基本功能,即将阿拉伯数字的人民币金额转换为大写的汉字表示,这在财务报表和银行交易中非常常见。文档概述则可能涵盖了报告的目的、内容和结构。 引用文件部分可能列出了参考的技术...
2. **数据集成**:Trans-Formas可能支持多种数据源的集成,包括数据库、API、日志文件等,帮助用户整合来自不同来源的信息,以获得全面的视图。 3. **数据可视化**:仪表操作通常与数据可视化紧密相关。Trans-...
通过JSP页面调用Applet实现人民币的大小写转换,可以实时地将用户输入的金额转换为大写或小写形式。该实现方法可以应用于电子商务、银行等领域,提供了一个便捷的金额转换工具。 六、技术要点 * 使用JSP页面调用...
"中科大-软件测试实验一-人民币数字大写转换黑盒测试实验报告" 本实验报告旨在对人民币数字大写转换软件进行黑盒测试,测试目的在于评估该软件的质量和可靠性。下面是实验报告的详细内容: 一、引言 软件测试是...
2. **HFS+和APFS文件系统**:这些是苹果操作系统中使用的文件系统,HFS+是较旧的版本,而APFS是较新的,更安全和高效的设计。 3. **黑苹果安装**:TransMac对于非苹果硬件上安装黑苹果系统至关重要,因为它能处理...
标题“trans_format_图片格式转换_”明确指出我们要讨论的主题,即如何将一张图片从一种格式转换为另一种格式。描述中提到,“将某一图片的格式进行,将其转换成另一个格式”,这是对转换过程的简洁概述。接下来,...
2. **写入DMG文件**:除了读取,TransMac还能将DMG文件写入到USB驱动器、CD、DVD或外部硬盘等存储设备上,以便在Mac电脑上使用。 3. **创建DMG文件**:对于Windows用户来说,TransMac提供了创建DMG文件的功能,方便...