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(105.30));
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%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;
}
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;
}
}//END public class money
分享到:
相关推荐
Java 人民币金额数字转换成大写 Java 人民币金额数字转换成大写是 Java 面试中最常见的问题之一。本文将详细介绍如何使用 Java 实现人民币金额数字转换成大写的解决方案。 Java 中的 NumberFormat 类 在 Java 中...
本篇文章将详细探讨如何实现一个数字转大写货币的函数,涵盖相关知识点。 首先,我们要明白数字转大写货币的基本规则。在中文环境下,大写数字通常用于正式的财务报表和法律文件,以避免因手写数字导致的混淆。大写...
水晶报表数字金额转中文大写,用于水晶报表中将数字金额转换为中文大写的金额
在MySQL数据库中,有时我们需要将数字金额转换成人民币的大写形式,这在财务报表或会计系统中非常常见。为了实现这一需求,我们可以自定义一个函数或者利用现有的字符串处理函数。以下是一个关于如何在MySQL中实现这...
货币、数字转大写,可转换数字、和货币,选择转换。货币可至角分毫里;
在Java编程中,将数字转换成大写是常见的需求,特别是在处理财务或会计相关的应用时。这个题目描述了一个简单的Java程序设计实验,其目的是将输入的浮点数值转换成中文金额的大写形式。以下是该实验涉及的主要知识点...
这段代码是用于将数字转换为中文大写的人民币表示方式,主要应用于财务软件或者与货币相关的程序中,方便在中文环境中准确地表示金额。这个函数名为`GetChinaNum`,接收4个参数:`otherNum`、`isRMB`、`numOption`和...
中文大写人民币数字则是中国特有的货币表示方式,用于明确金额并防止篡改。它包括以下汉字:壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿。例如,1000元用中文大写表示为“壹仟元整”。 实现罗马数字到...
这个程序的主要目的是将输入的价格数字转换为大写的汉字形式,以符合中国传统的货币表示习惯。在中文环境下,大写汉字用于增加金额的可读性和防止篡改。 `CnumToHan` 类是实现这一功能的核心。类通常在面向对象编程...
在IT行业中,尤其是在编程领域,将数字转换成中文大写是一项常见的需求,特别是在财务报表、会计软件或银行系统中。这种转换有助于确保数据的准确性和符合中国的财务规范,因为中文大写数字可以防止数字被篡改,增加...
"阿拉伯数字转换成英文和大写"可能是一个示例文件或者测试用例,用于验证程序的正确性。 理解并实现这样的功能,不仅可以帮助我们处理特定的数据格式化任务,也能加深对数据处理、文件操作和字符串转换等编程概念的...
在C++编程中,将`double`型数字转换为大写数字是一项常见的需求,尤其是在处理财务、会计等领域的数据时。通常,我们所说的"大写数字"是指将阿拉伯数字(0-9)转换为其对应的汉字表示,例如1对应于'壹',2对应于'贰'...
在IT行业中,尤其是在财务软件开发或者处理金融数据时,经常需要将阿拉伯数字(小写)转换为汉字大写,这是因为汉字大写数字在中国的金融交易中是标准的表示方式,可以有效防止因为数字混淆而引起的错误。...
本文实例为大家分享了python实现人民币大写转换的具体代码,供大家参考,具体内容如下 #!/usr/bin/python # -*- coding:utf-8 -*- # ********* 转换方法介绍 ********* # 将需要转换的数字从右向左,每4位分成一个...
在财务系统、银行交易以及其他需要处理货币的场合中,经常会遇到将数字转换成大写金额的需求。例如,在开具支票时,需要将数字金额转换成大写形式,以避免被篡改。这种转换在计算机编程中是一个常见的需求。 #### ...
在财务文档或正式报告中,将数字金额转换成大写格式是一种常见的规范要求,尤其在中国。FastReport提供了一种方法,通过编写自定义函数来实现这一转换。本例中的代码展示了一个具体的实现过程,用于将货币类型的数值...
综上所述,"数字转大写实例 人民币转大写实例"涉及到的是编程中处理数字和货币格式化的问题,尤其是中文环境下对数字和货币单位的正确转换,这在财务系统和相关应用开发中是必不可少的知识点。通过理解和掌握这些...
- 初始化一个大写数字字符数组,对应0-9的小写数字。 - 使用循环遍历整数部分,从后往前,每次取出一位,根据对应的数字找到大写字符。 - 对于每一位,如果为0,则需要判断前一位是否也为0,如果是,则需要插入...
这个"ios-数字金额转大写金额.zip"压缩包可能包含一个示例项目,名为"Demo",用于演示如何实现这个功能。在这个场景中,用户输入数字金额后,系统会自动将其转换为大写的汉字表示,比如"壹仟贰佰叁拾肆元伍角陆分"。...
在实现数字到汉字大写的转换时,一般会遵循这样的规则:从右至左,将数字按“元”、“角”、“分”等货币单位进行分割,并转换为对应的汉字。需要注意的是,有些数字和单位会有特殊情况,比如“0”的处理,以及“20...