Java人民币小写转大写字符串
写了一个人民币小写转大写的方法,Java版本,思路很简单,没有测出什么Bug,有bug欢迎反馈
public class RMBChange {private static String[] nums = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};// 单位还可以往上private static String[] unit = {"元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万"};// 小数位如还有需求可以直接往这个数组里加,private static String[] countNum = {"角", "分"};public static String change(String money) {// 过滤空if (money == null || "".equals(money)) {return "";}StringBuilder res = new StringBuilder();String[] splitStr = money.split("\\.");if (splitStr.length > 2) {throw new RuntimeException("输入的参数不是数字!");}String front = splitStr[0];// 用于判定0的显示boolean isZero = true;if (front.length() > unit.length) {throw new RuntimeException("输入的参数大于万亿!");}for (int i = 0; i < front.length(); i++) {// 整数位处理int dw = front.length() - i - 1;// 用ASCII码获得数字int index = (front.charAt(i) - '0');if (index == 0) {isZero = true;if (dw == 0 || dw == 4 || dw == 8) {// 元,万,亿需要拼接res.append(unit[dw]);}} else {if (isZero && i != 0) {// 多个0只显示一个res.append(nums[0]);}isZero = false;res.append(nums[index]);res.append(unit[dw]);}}// 判断是否有小数位if (splitStr.length > 1) {// 小数位处理,如果不需要则直接删除这个if及内部所有内容isZero = true;String back = splitStr[1];if (back.length() > countNum.length) {throw new RuntimeException("小数位小于【" + countNum[countNum.length - 1] + "】!");}for (int i = 0; i < back.length(); i++) {int index = (back.charAt(i) - '0');if (index == 0) {isZero = true;} else {if (isZero && i != 0) {res.append(nums[0]);}isZero = false;res.append(nums[index]);res.append(countNum[i]);}}}return res.toString();}
}
测试数据
public static void main(String[] args) {System.out.println(change("9999999999999.99")); // 玖万玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元玖角玖分System.out.println(change("5020055606500.00")); // 伍万零贰佰亿零伍仟伍佰陆拾万零陆仟伍佰元System.out.println(change("4001500050.16")); // 肆拾亿零壹佰伍拾万零伍拾元壹角陆分System.out.println(change("7854416")); // 柒佰捌拾伍万肆仟肆佰壹拾陆元System.out.println(change("9556")); // 玖仟伍佰伍拾陆元System.out.println(change("10086.0")); // 壹万零捌拾陆元System.out.println(change("263341.26")); // 贰拾陆万叁仟叁佰肆拾壹元贰角陆分System.out.println(change("3651.06")); // 叁仟陆佰伍拾壹元零陆分System.out.println(change("1.00")); // 壹元System.out.println(change("300.00")); // 叁佰元System.out.println(change("2007.01")); // 贰仟零柒元零壹分}
输出结果
玖万玖仟玖佰玖拾玖亿玖仟玖佰玖拾玖万玖仟玖佰玖拾玖元玖角玖分
伍万零贰佰亿零伍仟伍佰陆拾万零陆仟伍佰元
肆拾亿零壹佰伍拾万零伍拾元壹角陆分
柒佰捌拾伍万肆仟肆佰壹拾陆元
玖仟伍佰伍拾陆元
壹万零捌拾陆元
贰拾陆万叁仟叁佰肆拾壹元贰角陆分
叁仟陆佰伍拾壹元零陆分
壹元
叁佰元
贰仟零柒元零壹分
Java人民币小写转大写字符串相关推荐
- C#,JAVA人民币小写转大写
在CSDN里看到的,先在这里copy到这里留作以后备用 1 View Code 1 package fendou.wyb.io; 2 3 public class MoneySmallToBig { ...
- Java人民币小写转大写
package com.yahao.core.util;import java.math.BigDecimal;/***金额大小写转换工具类*/ public class MoneyUtil {/** ...
- java把小写变大写_用java实现人民币小写变大写的方法
用java语言可以实现人民币小写转换为大写吗?如何实现呢?下面常见的用java实现人民币小写变大写的方法可以说是最精简的了,希望大家可以学习下. 这里介绍一个通过取余的办法来实现将人民币小写转换为大写 ...
- java人民币大小写转换_Java 实现人民币小写转大写[转载http://sunjun.blogchina.com/]
Java实现人民币小写转大写 import java.io.*; import java.util.*; import java.lang.*; public class money { public ...
- golang实现人民币小写转大写
2019独角兽企业重金招聘Python工程师标准>>> 使用golang的正则表达式实现人民币小写转大写,代码如下: package mainimport ("regexp ...
- 人民币小写转换为大写函数
人民币小写转换为大写 <script language=javascript> mymoney=window.prompt("请输入金额:"); </script ...
- 人民币小写转大写的一般方法
人民币小写转大写的一般方法.还可以 const char* RMB(double rmb) { if(rmb<0) return NULL; static char *CCC[1 ...
- 英文转中文和人民币小写转大写
public static string PinYin(string mystr) { //指转换一个中文 string tt; if ((mystr.ToUpper().Compar ...
- C语言实现人民币小写转大写
这个是很早之前用C语言实现的人民币小写转大写的方法 /************************************************************************* ...
最新文章
- OpenCV畸变校正原理以及损失有效像素原理分析
- MySQL性能优化的21条最佳经验
- Elasticsearch(二)概念及安装、部署
- json-tree api_什么是JSON处理(JSON-P API)?
- java.util.Date转换成java.sql.Date
- 《MySQL——count()逻辑》
- 【干货分享】前端面试知识点锦集03(JavaScript篇)——附答案
- 大厂技术文档:Python基础+爬虫+数据分析+面试经精选
- 米斯特白帽培训讲义 实战篇 WordPress
- 一种类型安全的Java HTTP客户端库Retrofit
- 全球及中国信用卡生成器行业投资模式及投资策略分析报告2022-2028年
- ESP8266-WIFI模块配置
- 单片机原理——MCS-51单片机结构及原理
- Log4j2配置日志写入本地文件出错
- 互联网寒冬——“大裁员”
- java中sort函数的使用
- Infrared的危害-激光和红外区别
- 摘选 《人人都是工程师》前言
- [SSD固态硬盘技术 4] 主控详解
- 彩虹代shua网仿小储云的模板 提前备份好数据