共享一个数字金额换算成大写金额的工具类。这在互联网金融项目中是很常见的换算。
/** * MoneyToChinese.java * create on 2011-01-01 */ /** * 金额数据中文格式化工具类 * * @since version1.0 */ public class MoneyToChinese { public MoneyToChinese() { super(); } private final static String HanDigiStr[] = new String[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; private final static String HanDiviStr[] = new String[] { "", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟" }; /** * 将数字转为大写的汉字表示形式 * * @param String NumStr * @return String */ public static String PositiveIntegerToHanStr(String NumStr) { // 输入字符串必须正整数,只允许前置空格(必须右对齐),不宜有前置零 String RMBStr = ""; boolean lastzero = false; boolean hasvalue = false; // 亿、万进位前有数值标记 int len, n; len = NumStr.length(); if (len > 15) return "数值过大!"; for (int i = len - 1; i >= 0; i--) { if (NumStr.charAt(len - i - 1) == ' ') continue; n = NumStr.charAt(len - i - 1) - '0'; if (n < 0 || n > 9) return "输入含非数字字符!"; if (n != 0) { if (lastzero) RMBStr += HanDigiStr[0]; // 若干零后若跟非零值,只显示一个零 // 如十进位前有零也不发壹音用此行 if (!(n == 1 && (i % 4) == 1 && i == len - 1)) // 十进位处于第一位不发壹音 RMBStr += HanDigiStr[n]; RMBStr += HanDiviStr[i]; // 非零值后加进位,个位为空 hasvalue = true; // 置万进位前有值标记 } else { if ((i % 8) == 0 || ((i % 8) == 4 && hasvalue)) // 亿万之间必须有非零值方显示万 RMBStr += HanDiviStr[i]; // “亿”或“万” } if (i % 8 == 0) hasvalue = false; // 万进位前有值标记逢亿复位 lastzero = (n == 0) && (i % 4 != 0); } if (RMBStr.length() == 0) return HanDigiStr[0]; // 输入空字符或"0",返回"零" return RMBStr; } /** * 将浮点型数值转为人民币的表示方式(前面带¥) * * @param double val(传入的数值) * @return String(转化后的人民币数值表示方式字符串) */ public static String NumToRMBStr(double val) { String SignStr = ""; String TailStr = ""; long fraction, integer; int jiao, fen; if (val < 0) { val = -val; SignStr = "负"; } if (val > 99999999999999.999 || val < -99999999999999.999) return "数值位数过大!"; // 四舍五入到分 long temp = Math.round(val * 100); integer = temp / 100; fraction = temp % 100; jiao = (int) fraction / 10; fen = (int) fraction % 10; if (jiao == 0 && fen == 0) { TailStr = "整"; } else { TailStr = HanDigiStr[jiao]; if (jiao != 0) TailStr += "角"; if (integer == 0 && jiao == 0) // 零元后不写零几分 TailStr = ""; if (fen != 0) TailStr += HanDigiStr[fen] + "分"; } // 下一行可用于非正规金融场合,0.03只显示“叁分”而不是“零元叁分” // if( !integer ) return SignStr+TailStr; return "¥" + SignStr + PositiveIntegerToHanStr(String.valueOf(integer)) + "圆" + TailStr; } /** * 将浮点型数值转为人民币的表示方式 * * @param double val(传入的数值) * @return String(转化后的人民币数值表示方式字符串) */ public static String NumToCNMoney(double val) { String SignStr = ""; String TailStr = ""; long fraction, integer; int jiao, fen; if (val < 0) { val = -val; SignStr = "负"; } if (val > 99999999999999.999 || val < -99999999999999.999) return "数值位数过大!"; // 四舍五入到分 long temp = Math.round(val * 100); integer = temp / 100; fraction = temp % 100; jiao = (int) fraction / 10; fen = (int) fraction % 10; if (jiao == 0 && fen == 0) { TailStr = "整"; } else { TailStr = HanDigiStr[jiao]; if (jiao != 0) TailStr += "角"; if (integer == 0 && jiao == 0) // 零元后不写零几分 TailStr = ""; if (fen != 0) TailStr += HanDigiStr[fen] + "分"; } // 下一行可用于非正规金融场合,0.03只显示“叁分”而不是“零元叁分” // if( !integer ) return SignStr+TailStr; return SignStr + PositiveIntegerToHanStr(String.valueOf(integer)) + "圆" + TailStr; } }
相关推荐
**jQuery格式化大写金额...以上就是关于“jQuery格式化大写金额组件”的主要介绍,这个组件通过简单的API接口,让开发者能够在项目中轻松实现金融数据的中文大写展示,提升了用户体验,同时确保了财务数据的严谨性。
通过设置列的样式、自定义格式化方法、监听事件以及数据验证,我们可以确保金额数据在显示和编辑时都符合财务规范。以上所述的步骤和技巧将帮助你更好地实现`DataGridView`中的财务金额格式化,提高应用的专业性和...
将小写金额转换为大写,主要涉及到数字与汉字之间的映射。 #### 5.2 示例代码 下面是一个简单实现该功能的示例函数: ```javascript function convertMoneyToChinese(money) { const digits = ['零', '壹', '贰', ...
3. 验证和格式化:转换后的汉字金额应进行验证,确保符合中文金额书写规范,例如整数部分不能缺少“元”字,小数部分不能有额外的零。 4. 大额单位:对于较大的金额,还需要考虑“万”、“亿”等大单位的转换。 总...
中文金额通常以大写汉字表示,如“壹”、“贰”等,而英文金额则遵循特定的语法结构,如"$1,234.56"。转换过程涉及对数字进行拆分、映射和组合。 1. **字符串映射法**:这是最直观的方法,通过创建一个包含数字与...
在这篇文章中,作者主要介绍了如何使用JavaScript实现金额、字符和时间的格式化处理。以下是对文章中提及的方法的详细解读。 ### 金额格式化 文章首先介绍了将数字金额转换成中文大写金额的方法,这对于编写财务...
1. **优化数字格式化**:采用更精确的数字转换函数,或者在转换前对数字进行适当调整,以避免因双精度浮点数的有限精度而导致的误差。 2. **完善特殊情况处理**:对于“一十”这类特殊情况,可以通过更细致的逻辑...
这种控件通常具有格式化功能,能够确保用户输入的金额符合标准的格式,例如“XX.XX”,并且能进行大小写的转换,以满足财务报表或银行系统中的规范需求。 1. **自定义编辑框控件** 在VC++中,如果系统默认的编辑框...
在Oracle数据库中,处理金融数据时,我们经常需要对金额进行格式化,使其符合特定的显示标准,例如将数字转换为大写的汉字或者添加货币符号等。"Oracle 金额转换"是一个关键的操作,用于提高数据的可读性和合规性。...
1. **金额格式化**:首先,我们需要对输入的小写金额进行格式化,确保它符合标准的财务格式,即保留小数点后两位,并且在千位添加逗号分隔符。可以使用正则表达式和字符串的replace方法来完成这项工作。 2. **金额...
该插件不仅适用于静态的数字格式化,也可以用于动态更新,如响应用户输入的实时格式化,或者在表格、图表等动态展示的数据中应用。 ### 兼容性与优化 考虑到jQuery的广泛使用,此插件通常能兼容多种浏览器环境。...
// 对数字进行格式化,确保只有正整数或正小数 number = number.replace(",", "").replace(".", "."); if (!number.matches("\\d+(\\.\\d{1,2})?")) { throw new IllegalArgumentException("Invalid number ...
首先,我们可以使用编程语言内置的字符串格式化功能。例如,在Python中,可以编写自定义函数来实现这一转换。通过创建一个包含所有中文数字的字典,然后遍历输入的数字字符串,逐位查找对应的中文字符。对于每一位,...
在金融和会计领域,金额...在实际应用中,我们可能还需要考虑其他因素,如货币符号、格式化规范等。通过理解并遵循这些规则,我们可以编写出能够准确将小写金额转换为大写金额的程序,确保财务数据的准确性和规范性。
在“数值类文本到金额”模块中,可能会包含如`TextToMoney`这样的函数,接收一个数值类的文本参数,返回格式化的金额字符串。这个函数可能包含了上述的分离、格式化和拼接的逻辑。 4. 应用场景 - 财务软件:在会计...
`MoneyFormat` 类可能包含一系列方法,专门处理数字到中文大写金额的格式化。通常,这类方法会接受一个数字作为输入,然后将其转换为中文的千、百、十、个位的大写形式。例如,数字 "123456.78" 可能会被转换为 "壹...
JS对货币余额格式化为标准格式,最终结果是以英文逗号分隔,并且可以保存一位或者两位小数
这表明页面中有JavaScript代码用于处理小写金额到大写金额的转换以及格式化显示。 ```javascript function changeAmount() { // 获取输入框中的金额 var smallAmount = document.getElementById('accounttol')....
接着,使用字典查找每个汉字对应的阿拉伯数字,并进行相应的计算和格式化。最后,组合这些数字,形成完整的阿拉伯数字金额。 在Visual Studio 2008中,这可能涉及到C#或VB.NET语言的编程,可以使用正则表达式进行...
在JavaScript(JS)...综上所述,处理JavaScript中的货币格式化和金额转换涉及到字符串操作、正则表达式、自定义函数以及DOM操作等多个方面。通过这些方法,我们可以确保在前端界面中正确地显示符合财务规范的金额。