package com.syncshock.bmh.msn;
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(100000000.00));
System.out.println(mon.NumToRMBStr(10.3));
}
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;
}
}
分享到:
相关推荐
* 将数值大写 */ public static String capitalization(String szNum) { StringBuilder resstr = new StringBuilder(); String tmpstr = szNum.trim(); int sl = tmpstr.length(); int sp = 0; int dotpos =...
这段代码是用于将数字转换为中文大写的人民币表示方式,主要应用于财务软件或者与货币相关的程序中,方便在中文环境中准确地表示金额。这个函数名为`GetChinaNum`,接收4个参数:`otherNum`、`isRMB`、`numOption`和...
* 将double数值(有两位小数或无小数)转换成人民币的大写格式 * @param rmbDouble * @return String * @throws Exception */ public static String doChangeRMB(double rmbDouble)throws Exception{ ...
本篇将介绍如何使用Java编程语言将人民币金额转换成大写,并且通过自定义标签库(Tag Library)在网页上显示。首先,我们来看`ChangeNumMoney.java`这个文件,它可能包含了实现金额转换的核心逻辑。 `...
本示例中的"人民币大小写转换java完美版"就是一个典型的实例,它解决了在Java编程中将数字金额转换为大写的汉字金额,这对于银行系统、财务软件或上机作业来说是至关重要的功能。下面我们将深入探讨这个主题,讲解...
本文将详细探讨如何实现“金钱大写转数字类型,精确到分”的功能。 首先,我们需要理解汉字大写金额的构成。大写金额通常包括以下部分:零(零)、壹(1)、贰(2)、叁(3)、肆(4)、伍(5)、陆(6)、柒(7)...
【Java实现将数字转换成人民币大写】的代码主要涉及了将数字转化为中文大写汉字的逻辑,这对于财务系统和报表生成来说是非常重要的功能。在Java中,这个过程可以通过自定义类来实现,例如创建一个名为`Rmb`的类。...
实现人民币小写转大写的程序,通常会分为以下几个步骤: 1. **输入验证**:确保输入的字符串只包含数字和可能的正负号,排除非数字字符。 2. **金额处理**:如果金额为负,前面加上“负”字;如果金额为零,直接...
本文将深入解析一个具体的Java代码示例,它能够将输入的人民币数值(包括小数)转化为汉字大写的表示形式。 #### 核心知识点详解: ##### 1. 数字与汉字大写对应关系 在该Java程序中,定义了一个字符数组`digit`,...
1. **人民币大写规范**:在中国,财务报表和发票上的金额必须用中文大写来表示,以防止篡改数字,增强会计记录的清晰度和安全性。中文大写的数字包括零(零)、壹(1)、贰(2)、叁(3)、肆(4)、伍(5)、陆(6...
总之,这个Java方法实现了人民币数值到汉字大写的转换,考虑了小数和整数部分的处理,以及处理连续零的特殊规则,符合中国金融系统的规范。在实际开发中,可以将这个方法封装为一个工具类,方便在多个地方复用。
标题为“人民币大小写转换”的项目,是针对初学者设计的一个实战练习,旨在帮助他们更好地理解和运用Java编程语言。这个项目的核心功能是将输入的数字金额转化为符合中国财务规范的汉字大写形式,这在财务系统和报表...
- Java中的关键字,如类名首字母必须大写。 - 关键字不能作为标识符使用,例如`class`、`public`等。 #### 三、声明详解 Java中的类声明有两种方式: 1. **public class**: - 当使用`public`关键字声明类时,...
1. **public class** - 首字母大写的公共类,对应的.java文件名应与其一致,且一个.java文件只能有一个public class。 2. **class** - 非public类,文件名可以与类名不一致,且可以有多个此类声明。 五、Java虚拟机...
1. 数值格式化:使用编程语言提供的函数(如Python的`format`或Java的`NumberFormat`)将数字转化为字符串,控制小数位数和千分位分隔。 2. 字符串处理:通过字符串操作,比如查找、替换、拼接等,将数字字符串转换...
HashMap是Java编程中不可或缺的数据结构,它提供了高效的键值对存储和检索能力。在深入探讨HashMap的原理之前,我们先来澄清几个基本概念。 1. **哈希码(Hash Code)**:HashMap依赖于对象的哈希码来进行快速查找...
1. **中文数字与阿拉伯数字对应关系**:中文金额通常由大写的中文数字字符表示,例如“壹”代表1,“贰”代表2,以此类推至“玖”。此外,“零”表示0,“拾”表示10,“佰”表示100,“仟”表示1000,“万”表示...