public class MoneyUtil {
// 调试时用main函数
public static void main(String args[]) {
System.out.println(toRMB(62261.19));
}
static String HanDigiStr[] = new String[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
static String HanDiviStr[] = new String[] { "", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟",
"万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万", "拾", "佰", "仟" };
static 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;
}
public static String toRMB(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;
}
}
相关推荐
在实际项目中,我们经常需要处理与金钱相关的数据,这时就需要用到金额格式化组件。"基于vue-element的金额格式化组件"是针对这一需求而设计的,它将帮助我们在Vue.js应用中方便地展示和输入货币值。 Vue Element是...
在JavaScript开发中,日期处理和金额格式化是两个常见的需求,尤其在财务或者数据分析相关的应用中更为重要。JavaScript原生提供了Date对象来处理日期,但其功能相对有限,因此开发者通常会利用各种库来增强其功能,...
此外,文章还提到了其他相关的JavaScript金额格式化文章,这些文章提供了不同的方法和思路,可以帮助开发者更全面地理解和解决金额格式化的问题。通过学习和实践这些代码,开发者可以更好地应对在开发过程中遇到的...
按要求将金额格式化,如:123456变成1,234.56 以分为单位
在JavaScript中,金额格式化是一种常见的需求,尤其在前端开发中,为了提升用户对金额的可读性,通常会将数字按照千位分隔符进行格式化,并保留一定数量的小数位。而有时又需要将格式化后的金额还原成原始的数字,...
综合以上代码,我们可以实现一个功能完备的金额格式化输入框。用户在输入时,输入的金额会实时地按照每三位数字加逗号的规则进行格式化,同时保留两位小数。这个实现不仅提高了用户体验,也保证了数据的正确性,避免...
把数字格式化成大写的金额显示(完整版)
最简洁的oracle格式化为数字,保留小数位数,简单易行,功能全面
此函数用于格式化金额数字,使其具有标准的货币格式。它能够正确处理负数,并确保结果始终保留两位小数。 #### 参数说明 - `amount`: 需要被格式化的金额数字。 #### 示例代码 ```javascript function ...
格式化人民币,能将您输入的数字格式化成人民币类型,欢迎下载。
wnumb.js是一个前端格式化数字金额的插件,比如常见的数字千分位问题。用法如下: // 定义格式化的规则 var moneyFormat = wNumb({ mark: '.', thousand: ',', prefix: '$ ', suffix: ' p.p.' }); // 格式化一...
在Go-golang编程语言中,处理金额和货币格式化是一个重要的任务,特别是在开发财务软件时。Go语言提供了强大的工具和库来帮助开发者有效地处理这些数值。在这个场景中,我们关注的是`accounting`包,它是一个专为Go...
在IT行业中,尤其是在财务软件开发或者银行系统中,将金额数字格式化为大写形式是一项常见的需求。这有助于确保财务报告的清晰度和准确性,同时符合中国的会计规范。本篇文章将详细探讨如何实现这一功能,主要针对...
这个是网里边传值,然后在动返回格式化后的金额!很好用,不好用你拍我!
accounting.js是什么,金钱和货币格式一个微小的JavaScript库,使用可选的Excel风格的列渲染(排队符号和小数)。它的重量轻,完全可本地化和具有零依赖性。 演示地址:http://www.jq22.com/jquery-info326
在.NET框架中,`DataGridView`控件是用于展示表格数据的常用组件,广泛应用于各种桌面应用程序。...以上所述的步骤和技巧将帮助你更好地实现`DataGridView`中的财务金额格式化,提高应用的专业性和用户体验。
"finereport格式化金额函数js中进行数字超大金额千位符格式化处理" 本文主要讲解了finereport格式化金额函数在JS中进行数字超大金额千位符格式化处理的方法。该需求在前端开发中非常普遍,例如音乐app中的歌曲播放...
VB 将小写数字金额格式化为大写金额,这一个相比其它的金额数字转换,是自动转换,用户输入完小写数字金额后,程序将自动把小写数字变为大写,不过奇怪的是,在代码中并没有发现转换功能写在哪里,看到有数据库,...
### JavaScript 数字和金额格式化知识点 #### 1. 格式化数字和金额的概念 在Web开发中,常常需要对数字进行格式化处理,以便以更易读的格式展示给用户。格式化数字和金额指的是将原始的数字字符串转换成带有千位...