package com.test;
public class RmbConvert {
public String simpleToBig(double money) {
if (money <= 0) {
return "不能为负数";
}
String result = "";
char[] hunit = { '拾', '佰', '仟' }; // 段内的量度
char[] vunit = { '万', '亿' }; // 段间的量度
char[] digit = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' }; // 小写对应的大写
long longMoney = (long) (money * 100);
String strMoney = String.valueOf(longMoney); // 将小数变成整数,再放入字符串中
String head = strMoney.substring(0, strMoney.length() - 2); // 整数部分
String tail = strMoney.substring(strMoney.length() - 2); // 小数部分
String prefix = ""; // 存放转换的整数部分
String suffix = ""; // 存放转换的小数部分
if (tail.equals("00")) {
suffix += "整";
} else {
char tailChar[] = tail.toCharArray();
suffix += digit[tailChar[0] - '0'] + "角" // 将小数部分表示出来
+ digit[tailChar[1] - '0'] + "分"; // '0' ASCII 为 48,相减得索引号
}
char headChar[] = head.toCharArray();
/*
* 考虑零的情况,记录0的个数
*/
char zero = '0';
byte zeroSize = 0;
/*
* 先不考虑有0的情况,有点小复杂,因为有0的地方不能有单位
*
* 等能实现大概功能时,再来考虑有0的情况
*/
for (int i = 0; i < headChar.length; i++) {
int idx = (headChar.length - i - 1) % 4; // 判断“段内”,"十,佰,千"
// idx=0,表示每4位分段了
int vidx = (headChar.length - i - 1) / 4; // 判断“段间”,“万,亿”
if (headChar[i] == '0') { // 考虑0的情况了
zeroSize++;
if (zero == '0') {
zero = digit[0];
} else if (idx == 0 && zeroSize < 4 && vidx > 0) {
prefix += vunit[vidx - 1]; // 当遇到1,1000,1234时, 1千万才能表示出来
zero = '0'; // 当1千万表示出来时,“零”就不需要了,在后来判断zero != 0
}
continue;
}
if (zero != '0') { // 没有转成千万时,就将”零“加入
prefix += zero; // 不至于出现很多个”零“
}
zeroSize = 0; // 还原成以前的
prefix += digit[headChar[i] - '0']; // ‘1’变成‘壹’
if (idx > 0) {
prefix += hunit[idx - 1]; // 加上 "十,佰,千"
}
if (idx == 0 && vidx > 0) {
prefix += vunit[vidx - 1]; // 加上 “万,亿”
}
}
if (prefix.length() > 0) {
result = prefix + "圆" + suffix;
}
return result;
}
public static void main(String[] args) {
RmbConvert rmb = new RmbConvert();
String cn = rmb.simpleToBig(1234567890.78);
System.out.println(cn);
}
}
分享到:
相关推荐
JS将数字转换为大写汉字人民币
在MySQL数据库中,有时我们需要将数字金额转换成人民币的大写形式,这在财务报表或会计系统中非常常见。为了实现这一需求,我们可以自定义一个函数或者利用现有的字符串处理函数。以下是一个关于如何在MySQL中实现这...
这个"Rmb.rar_人民币 转换 java_人民币大写"的压缩包就是一个典型的例子,它包含了一个Java程序,用于将数字转换成符合中国金融规范的人民币大写形式。这种转换对于财务报表、发票开具等场景至关重要,因为它们要求...
小写数字转换大写人民币符合财务规定,这只是个DLL文件,你可以调用,运行结果为:输入 1000 或者 1000.00它将转换为 壹仟零佰零拾零元零角零分下面给出这个DLL的接口,声明部份function DatoFB(DX: string):string ;...
本文将详细介绍一个Java程序,该程序用于将小写的人民币金额转换为大写形式。此转换主要用于财务、会计和其他正式场合,在这些场合中,大写金额是标准且必须的格式。此程序能够处理的金额范围最大支持到“仟万亿”,...
一种方法是创建一个自定义VBA(Visual Basic for Applications)函数,通过编写一段VBA代码来实现数字到大写人民币的转换。例如,你可以创建一个名为`RMB`的自定义函数,将数字作为参数输入,返回对应的人民币大写...
根据数字转换大写并插入单位 ... } // ... 对小数部分进行转换 ... var decimalCN = ''; if (decimalPart !== '00') { // ... 转换并处理小数部分 ... } // ... 组合整数部分、小数部分及单位 ... var ...
给定的代码实现了一个名为`rmb`的VBA自定义函数,其主要作用是将小写的人民币数值转换为大写汉字表示。例如,输入“12345.67”将返回“壹万贰仟叁佰肆拾伍元陆角柒分”。 #### 函数逻辑分析 1. **变量声明与初始化*...
MFC制作的人民币小写金额转化大写金额,方便出差回来时报账填写账单大写RMB使用,欢迎下载
总的来说,将数字转化为人民币大写形式是Java编程中的一个实用技巧,涉及到数字与字符串的转换、位运算以及特殊规则的理解和应用。通过理解和实践这个过程,可以增强对Java字符串操作和逻辑处理的理解。
在做商业领域中,开发票、支票等与金钱相关的项目时通常会遇到要求把数字转换成中文大写。诸如“壹拾圆陆角玖分”。借鉴网友成熟的想法,再加上我周密的思考,最终形成此代码。压缩包中仅包含一个java文件,里面仅有...
在Oracle数据库环境中,有时我们需要将数字金额转换成汉字大写形式,这在财务报表或理财程序中尤为常见,因为汉字大写是财务领域的一种标准表示方式,可以避免因数字混淆而引发的错误。本篇文章将深入探讨如何在...
Excel 中负数的人民币金额转换为大写的公式应用 在财务记账中,经常会遇到负数的金额,而 Excel 的单元格格式设置无法满足要求。本节将提供一个可供负数、正数使用的函数公式来将人民币金额转换为大写。 公式解析 ...
本篇将介绍如何使用Java编程语言将人民币金额转换成大写,并且通过自定义标签库(Tag Library)在网页上显示。首先,我们来看`ChangeNumMoney.java`这个文件,它可能包含了实现金额转换的核心逻辑。 `...
"转换人民币大写金额"是一个常见的需求,尤其是在财务报表、发票开具以及银行交易中,因为大写金额可以防止数字输入错误。本示例中的C#代码提供了一个解决方案,允许开发者将数字金额转换为标准的中文大写格式。 在...
"人民币大写转换js"是一个常见的需求,它涉及到JavaScript编程语言中的字符串处理和数字格式化技术。下面将详细阐述这个主题。 首先,人民币大写转换通常涉及到以下字符:零(0)、壹(1)、贰(2)、叁(3)、肆...
在描述中提到的"delphi下人民币大写函数",应该是一个能够将小写的人民币金额转换为大写的函数或类库。这个函数可能包含了处理各种数值情况的逻辑,例如零、正数、负数、小数点后的位数等,并且根据中国的会计规则,...
本文主要介绍如何在Excel中将阿拉伯数字表示的人民币金额自动转换成大写形式。该功能在制作财务报表、发票或其他需要大写金额的文档时非常实用。通过使用Excel公式实现自动化处理,可以有效减少人工操作的工作量,并...
【Java实现将数字转换成人民币大写】的代码主要涉及了将数字转化为中文大写汉字的逻辑,这对于财务系统和报表生成来说是非常重要的功能。在Java中,这个过程可以通过自定义类来实现,例如创建一个名为`Rmb`的类。...