package com.lixueli.util;
public class MoneyUtil {
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(String money) {
double val = Double.parseDouble(money);
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 void main(String args[]) {
MoneyUtil mon = new MoneyUtil();
System.out.println(mon.NumToRMBStr("63200.53"));
}
}
分享到:
相关推荐
"金额小写转大写_sql函数"的主题聚焦于如何在SQL(结构化查询语言)中将货币数值从小写形式转换为符合中国会计规范的大写形式。在财务报告和正式文档中,通常要求金额以大写汉字表示,以防止篡改和增加审计安全性。 ...
金额小写转大写完整版本js,可直接调用
本文将详细介绍"BAT批处理脚本-格式转换-人民币金额小写转大写.cmd.zip"这个压缩包中的知识点,以及如何利用批处理脚本来实现人民币金额的小写到大写的转换。 首先,我们要理解批处理脚本的基本概念。批处理脚本是...
"人民币金额小写转大写"是一个常见的需求,它涉及到将阿拉伯数字(小写)转换成中文汉字(大写),以减少书写错误和欺诈的风险。在.NET框架下,C#语言提供了丰富的功能来处理这种转换。 首先,我们需要理解人民币...
在 DELPHI 开发环境中,将金额小写转换为大写...通过以上描述,我们可以理解 DELPHI 中将金额小写转大写的基本思路和实现方式,以及提供的示例程序可能的工作原理。如果需要深入了解,可以进一步分析压缩包中的源代码。
"js金额小写转大写脚本"指的是JavaScript编程语言中用于将小写的货币金额(阿拉伯数字)转换为大写的汉字数字的代码片段。这样的脚本有助于提高财务报表的可读性和规范性,因为在中国,正式的财务文档通常要求金额以...
这个“人民币金额小写转换大写工具 1.0 绿色版”就是为了方便用户快速、准确地完成这一转换而设计的。绿色版意味着它是一个无需安装、直接运行的软件,不含有任何恶意插件,也不会在用户的计算机上留下任何痕迹,...
### 人民币小写金额转大写金额(Java版) #### 概述 本文将详细介绍一个Java程序,该程序用于将小写的人民币金额转换为大写形式。此转换主要用于财务、会计和其他正式场合,在这些场合中,大写金额是标准且必须的...
金额小写转大写,练手写的,还可以,个人感觉……
本篇文章将基于PowerBuilder 9(PB9)环境,详细解析一个金额小写转大写的示例程序。 ### 二、代码分析与解释 #### 1. 定义常量数组 ```pb string CN_NUM[10] = {"零","壹","贰","叁","肆","伍","陆","柒","捌",...
javascript金额小写转大写,支持到小数点前13位。
以下是对"人民币金额小写转换大写"这一知识点的详细说明。 首先,我们需要了解人民币大写数字的基本规则。人民币的大写数字包括:壹、贰、叁、肆、伍、陆、柒、捌、玖、零。小写数字1到9分别对应大写的一到九,0...
可以实现高到垓位低到毫的 人民币金额小写转大写 C#完整的程序。
Excel金额小写转大写公式 Excel 中的小写金额转换为大写金额是一个常见的问题。随着数字金额的增加,转换为大写金额变得越来越复杂。为了解决这个问题,我们可以使用Excel公式来实现小写金额转换为大写金额。下面...
在C#编程环境中,将金额小写转换为大写是一项常见的需求,特别是在财务软件或银行系统中。在Microsoft Visual Studio 2010这个开发环境下,利用.NET Framework 4.0提供的类库和方法,我们可以编写出高效且准确的转换...
金额小写转大写工具,正数负数都可以转换。
标题中的“VFP完全符合财务书写规范的金额小写转大写dll”指的是在Visual FoxPro(VFP)环境中开发的一个动态链接库(dll)文件,该文件专门用于将财务中常用的金额数字从小写形式转换为大写形式,以满足中国财务...