public class Money {
//调试时用main函数
public static void main(String args[]) {
Money mon = new Money();
// System.out.println(-99999999999999.999 + mon.NumToRMBStr(-99999999999999.999));
// System.out.println(99999999999999.999 + mon.NumToRMBStr(99999999999999.999));
System.out.println(mon.NumToRMBStr(202.53));
// System.out.println(mon.NumToRMBStr(100000001.00));
}
String HanDigiStr[] = new String[]{"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
String HanDiviStr[] = new String[]{"", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿",
"拾", "佰", "仟", "万", "拾", "佰", "仟", "亿",
"拾", "佰", "仟", "万", "拾", "佰", "仟"};
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 && (lastzero || i==len-1) ) ) // 如十进位前有零也不发壹音用此行
if (!(n == 1 && (i % 4) == 1 && i == len - 1)) // 十进位处于第一位不发壹音
RMBStr += HanDigiStr[n];
RMBStr += HanDiviStr[i]; // 非零值后加进位,个位为空
hasvalue = true; // 置万进位前有值标记
} else {
if ((i %
== 0 || ((i %
== 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;
}
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;
}
}
分享到:
相关推荐
在IT领域,转换金钱数额为大写汉字,汉字转化为拼音,以及通过IP定位城市是常见的需求,这涉及到了数据处理、字符串操作以及网络地理定位等多个技术方面。下面将详细讲解这三个知识点。 首先,将金钱数额转为大写...
Java语言实现的,将数字金额转换为人民币大写金额的例子,没有对输入数字进行校验,小数点后只保留两位,支持千分符。最大金额范围为千亿。
### 知识点一:人民币小写转大写的背景及意义 在财务领域中,经常需要将数字金额转换为汉字大写形式,尤其是在开具发票、签署合同等正式场合下。这种转换有助于提高数据的安全性和防伪性,避免因数字篡改而产生的...
在财务领域,对于小数点后的数额,通常按照四舍五入的规则进行处理,以符合国家的相关规定和行业标准。因此,“数字转换大写”软件也内置了四舍五入的算法,确保金额转换的精确度。 “数字转换大写.exe”是这款软件...
在编程领域,尤其是在Java开发中,有时我们需要将数字转化为它们对应的英文单词表示,这在诸如账单、报表或者用户友好的界面中很常见。"NumberToWord:Java程序将数字转换成单词"这个主题就是关于如何用Java实现这样...
### C# 数字金额转换为大写中文金额 在日常财务处理、银行系统以及各种商业应用中,将数字金额转换成大写中文金额是一项非常实用的功能。这种转换主要用于正式文件中的金额表示,如发票、支票等,可以有效防止金额...
在金融和会计领域,将阿拉伯数字金额转换成大写汉字是必要的,这主要是为了防止篡改和增强账目的清晰度。大写的汉字金额在正式的财务文档如支票、发票和合同中是标准做法,因为它们增加了金额的可读性和安全性。本...
Java 接口的实现操作 Java 接口是一种抽象的概念,定义了一组方法的集合,但这些方法未被实现。接口的实现是指在某个类中,提供了接口中所有方法的实现。Java 的接口可以学习如何实现 Java 的接口,在编写实现程序...
在这些场合,大写数字不仅表示精确的数额,还体现了正规性和合法性。例如,“伍拾陆万元整”代表560,000元,“壹佰贰拾伍元贰角柒分”代表125.27元。 总结来说,大写数字在金融交易中起到关键作用,规范书写可以...
中国的会计和金融领域对于数字的书写要求极为严格,特别是在处理涉及金钱数额的文件时,使用大写汉字数字几乎成为了一种标准操作。这不仅仅是为了适应传统的书写习惯,更是出于对交易安全的考虑。在现代会计实践中,...
数字与大写人民币表达式之间的转换是一个常见的编程任务,尤其在财务相关的软件开发中。这个过程涉及到数字的解析和对中文数字体系的理解。在JavaScript中实现这样的转换函数需要处理数字的整数部分和小数部分,并且...
在中国,书写涉及金钱的数额时,为了确保准确性与防止欺诈,通常会采用特定的大写汉字来表示数字。本文主要讨论如何正确书写大写的一万元,以及相关的大写数字规则。 一万元的大写形式是“壹万元整”。在这个表述中...
在IT行业中,编程是解决问题的关键工具之一,而Java作为广泛应用的编程语言,常常被用于开发各种实用工具,如“房贷计算器”。本项目提供了一个全面的Java实现房贷计算器的代码,涵盖了房贷计算的各种情况,包括正常...
本文将深入探讨如何使用C语言编写一个金钱修改器,以针对《极品飞车8:地下狂飙2》这款游戏进行金钱数额的调整。这不仅是一个实用的工具,也是学习C语言编程和理解游戏数据结构的好例子。 首先,我们要了解《极品...
等额本金还款法(Equal Principal Payment Method)是指在还款期内,每月偿还固定数额的本金,而利息随着剩余贷款余额的减少逐月递减。因此,每月的还款额由固定的本金部分和剩余贷款余额产生的利息组成,总体还款...
在Java编程语言中,实现个人所得税的计算是一项常见的任务,特别是在财务软件或税务管理系统中。以下将详细讲解如何使用Java来实现这一功能,并探讨相关的知识点。 1. **基础概念** - **个人所得税**:是对个人...
输出英文字母表 编写一个Java 应用程序,该程序在命令窗口输出英文字母表。 提示:为了输出英文字母表,首先应该获取字母表中的第一个字母和最后一个...用户输入年利率,贷款年数,贷款总额,程序输出每月还款数额。
在企业管理中,资金数额证明是一项重要的文档,通常用于记录和证明企业或其分支机构的资金流动情况。这份文档在多个场合起到关键作用,例如对外投资、贷款申请、审计审查或者合作伙伴关系的确立。以下将详细解析...
在Java编程语言中,开发一个银行管理系统涉及到许多关键概念和技术,包括用户界面设计、数据处理、安全性以及数据库交互。从提供的代码片段来看,这个系统主要关注用户界面的构建,使用了Swing库来创建图形用户界面...