金额转大写,Java代码JavaScript代码

编程入门 行业动态 更新时间:2024-10-27 00:25:10

金额转大写,Java<a href=https://www.elefans.com/category/jswz/34/1771412.html style=代码JavaScript代码"/>

金额转大写,Java代码JavaScript代码

  • Java实现代码
import java.util.HashMap;
import java.util.Map;/*** * @author szbd**/
public class MoneyUtil {/**金额格式化*///public static DecimalFormat df = new DecimalFormat("#.####");/**大写数字*/private static String[] chineseNum = new String[] {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};/**数位*/private static String[] position = new String[] {"", "", "拾", "佰", "仟"};/**整数单位*/private static String[] intNumUnit = new String[] {"", "元", "万", "亿"};/**小数单位*/private static String[] decimalNumUnit = new String[] {"角", "分", "毫", "厘"};/*** 金额转大写* @param money* @return*/public static String toChinese(String money) {//空字符串,直接返回if(money==null || "".equals(money)) {return null;}//整数和小数分割String[] arr = splitMoney(money);//整数部分String intNum = arr[0];//小数部分String decimalNum = arr.length>1 ? arr[1] : "";return intNumToChinese(intNum) + decimalNumToChinese(decimalNum);}/*** 整数部分大写* @param intNum* @return*/private static String intNumToChinese(String intNum) {//如果是0,直接返回空if(Integer.parseInt(intNum)==0) {return "";}int len = intNum.length();int groups = len%4==0 ? len/4 : (len/4)+1;Map<Integer, String> map = intNumberDivide(intNum, groups);StringBuffer chineseNum = new StringBuffer();for(Integer i=groups; i>0; i--) {chineseNum.append(converte(i, map.get(i)));}return chineseNum.toString();}/*** 小数部分转大写* @param decimalNum* @return*/private static String decimalNumToChinese(String decimalNum) {//如果是00,直接返回空if("".equals(decimalNum) || Integer.parseInt(decimalNum)==0) {return "整";}int len = decimalNumUnit.length<decimalNum.length() ? decimalNumUnit.length : decimalNum.length();StringBuffer strb = new StringBuffer();for(int i=0; i<len; i++) {int n = Integer.parseInt(String.valueOf(decimalNum.charAt(i)));if(n!=0) {strb.append(chineseNum[n]).append(decimalNumUnit[i]);}}return strb.toString();}/*** 整数部分每四位分一组* @param intNum* @return*/public static Map<Integer, String> intNumberDivide(String intNum, int groups) {Map<Integer, String> map = new HashMap<Integer, String>();int len = intNum.length();for(int i=1; i<=groups; i++) {int startIndex = (len-(4*i))<0 ? 0 : len-(4*i);map.put(i, intNum.substring(startIndex, len-(4*(i-1))));}return map;}/*** 转换* @param groupNum* @param numStr* @return*/private static String converte(int groupNum, String numStr) {//如果是0000,直接返回空if(Integer.parseInt(numStr)==0) {return groupNum==1 ? intNumUnit[1] : "";}StringBuffer strb = new StringBuffer();int len = numStr.length();for(int i=0; i<len; i++) {int n = Integer.parseInt(String.valueOf(numStr.charAt(i)));if(n==0) {//最后一位是0,不转换if(i==len-1) {break;}//判断后一位数字int next = Integer.parseInt(String.valueOf(numStr.charAt(i+1)));//后一位数字不为0,此处拼 零if(next!=0) {strb.append(chineseNum[n]);}} else {strb.append(chineseNum[n]).append(position[len-i]);}}strb.append(intNumUnit[groupNum]);return strb.toString();}/*** 整数和小数分割* @param money* @return*/private static String[] splitMoney(String money){String[] arr = money.split("\\.");//去除非数字字符arr[0] = arr[0].replaceAll("\\D", "");return arr;}
}
  • JavaScript实现代码
/**大写数字*/
var chineseNum = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖");
/**数位*/
var position = new Array("", "", "拾", "佰", "仟");
/**整数单位*/
var intNumUnit = new Array("", "元", "万", "亿");
/**小数单位*/
var decimalNumUnit = new Array("角", "分","毫","厘");/*** 金额转大写* @param money 金额字符串* @param decimalNumLength 小数部分保留几位,最多4位* @returns {String}*/
function toChinese(money, decimalNumLength){//为空直接返回if (money==='') {return '';}//分离整数部分和小数部分var mArr = splitMoney(money.toString());var intNum = mArr[0];//整数部分var decimalNum = mArr.length>1 ? mArr[1] : '';//小数部分//小数保留长度var decimalNumLen = decimalNumLength;if(decimalNumLength==undefined){decimalNumLen = decimalNumUnit.length<decimalNum.length ? decimalNumUnit.length : decimalNum.length;} else if(decimalNumLength>decimalNumUnit.length){decimalNumLen = decimalNumUnit.length;}return  intNumToChinese(intNum) + decimalNumToChinese(decimalNum, decimalNumLen);
}/*** 整数部分转大写* @param intNum* @returns {String}*/
function intNumToChinese(intNum){if(parseInt(intNum)==0){return '';}var len = intNum.length;//上取整var groups = Math.ceil(len/4);//整数部分,每4位分一组var intNumArr = new Array();for(var i=1; i<=groups; i++){var startIndex = (len-(4*i))<0 ? 0 : len-(4*i);intNumArr[i-1] = intNum.substring(startIndex, len-(4*(i-1)));}var result = '';for(var i=groups; i>0; i--){result += intNumConverte(intNumArr[i-1], i);}return result;
}/*** 小数部分转换* @param decimalNum* @param decimalNumLen 小数保留长度* @returns {String}*/
function decimalNumToChinese(decimalNum, decimalNumLen){//如果是00,直接返回空if(decimalNumLen==0) {return "整";}var result = '';for(var i=0; i<decimalNumLen; i++) {var n = parseInt(decimalNum.substring(i, i+1));if(n!=0) {result += chineseNum[n] + decimalNumUnit[i];}}return result;
}/*** 转换* @param intNum* @param group*/
function intNumConverte(intNum, group){//如果是0000,直接返回空if(parseInt(intNum)==0){return groupNum==1 ? intNumUnit[1] : '';}var len = intNum.length;var result = '';for(var i=0; i<len; i++){var n = intNum.substring(i, i+1);if(parseInt(n)==0){//最后一位是0,不转换if(i==len-1) {break;}//后一位数字不为0,此处拼 零if(parseInt(intNum.substring(i+1, i+2))!=0) {result += chineseNum[n];}} else {result += chineseNum[n] + position[len-i];}}result += intNumUnit[group];return result;
}/*** 分离整数部分和小数部分*/
function splitMoney(money){var mArr = money.split('.');//如果金额中带有逗号,如:100,201,300.35,去除逗号//replace(new RegExp(/\D/, 'gm'), ''); 表示全局替换mArr[0] = mArr[0].replace(new RegExp(/\D/, 'gm'), '');return mArr;
}

更多推荐

金额转大写,Java代码JavaScript代码

本文发布于:2024-02-11 13:25:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1681229.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:代码   金额   Java   JavaScript

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!