一个将小写数字转换成大写数字的工具类
来源:互联网 发布:北京医疗软件开发 编辑:程序博客网 时间:2024/05/22 02:15
- import java.math.BigDecimal;
- public class ConvertNumber {
- /** 定义数组存放数字对应的大写 */
- private final static String[] STR_NUMBER = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
- /** 定义数组存放位数的大写 */
- private final static String[] STR_MODIFY = { "", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟" };
- /**
- * 转化整数部分
- *
- * @param tempString
- * @return 返回整数部分
- */
- private static String getInteger(String tempString) {
- /** 用来保存整数部分数字串 */
- String strInteger = null;//
- /** 记录"."所在位置 */
- int intDotPos = tempString.indexOf(".");
- int intSignPos = tempString.indexOf("-");
- if (intDotPos == -1)
- intDotPos = tempString.length();
- /** 取出整数部分 */
- strInteger = tempString.substring(intSignPos + 1, intDotPos);
- strInteger = new StringBuffer(strInteger).reverse().toString();
- StringBuffer sbResult = new StringBuffer();
- for (int i = 0; i < strInteger.length(); i++) {
- sbResult.append(STR_MODIFY[i]);
- sbResult.append(STR_NUMBER[strInteger.charAt(i) - 48]);
- }
- sbResult = sbResult.reverse();
- replace(sbResult, "零拾", "零");
- replace(sbResult, "零佰", "零");
- replace(sbResult, "零仟", "零");
- replace(sbResult, "零万", "万");
- replace(sbResult, "零亿", "亿");
- replace(sbResult, "零零", "零");
- replace(sbResult, "零零零", "零");
- /** 这两句不能颠倒顺序 */
- replace(sbResult, "零零零零万", "");
- replace(sbResult, "零零零零", "");
- /** 这样读起来更习惯. */
- replace(sbResult, "壹拾亿", "拾亿");
- replace(sbResult, "壹拾万", "拾万");
- /** 删除个位上的零 */
- if (sbResult.charAt(sbResult.length() - 1) == '零' && sbResult.length() != 1)
- sbResult.deleteCharAt(sbResult.length() - 1);
- if (strInteger.length() == 2) {
- replace(sbResult, "壹拾", "拾");
- }
- /** 将结果反转回来. */
- return sbResult.toString();
- }
- /**
- * 转化小数部分 例:输入22.34返回叁肆
- *
- * @param tempString
- * @return
- */
- private static String getFraction(String tempString) {
- String strFraction = null;
- int intDotPos = tempString.indexOf(".");
- /** 没有点说明没有小数,直接返回 */
- if (intDotPos == -1)
- return "";
- strFraction = tempString.substring(intDotPos + 1);
- StringBuffer sbResult = new StringBuffer(strFraction.length());
- for (int i = 0; i < strFraction.length(); i++) {
- sbResult.append(STR_NUMBER[strFraction.charAt(i) - 48]);
- }
- return sbResult.toString();
- }
- /**
- * 判断传入的字符串中是否有.如果有则返回点
- *
- * @param tempString
- * @return
- */
- private static String getDot(String tempString) {
- return tempString.indexOf(".") != -1 ? "点" : "";
- }
- /**
- * 判断传入的字符串中是否有-如果有则返回负
- *
- * @param tempString
- * @return
- */
- private static String getSign(String tempString) {
- return tempString.indexOf("-") != -1 ? "负" : "";
- }
- /**
- * 将一个数字转化为金额
- *
- * @param tempNumber 传入一个double的变量
- * @return 返一个转换好的字符串
- */
- public static String numberToChinese(double tempNumber) {
- java.text.DecimalFormat df = new java.text.DecimalFormat("#.#########");
- String pTemp = String.valueOf(df.format(tempNumber));
- StringBuffer sbResult = new StringBuffer(getSign(pTemp) + getInteger(pTemp) + getDot(pTemp) + getFraction(pTemp));
- return sbResult.toString();
- }
- public static String numberToChinese(BigDecimal tempNumber) {
- return numberToChinese(tempNumber.doubleValue());
- }
- /**
- * 替代字符
- *
- * @param pValue
- * @param pSource
- * @param pDest
- */
- private static void replace(StringBuffer pValue, String pSource, String pDest) {
- if (pValue == null || pSource == null || pDest == null)
- return;
- /** 记录pSource在pValue中的位置 */
- int intPos = 0;
- do {
- intPos = pValue.toString().indexOf(pSource);
- /** 没有找到pSource */
- if (intPos == -1)
- break;
- pValue.delete(intPos, intPos + pSource.length());
- pValue.insert(intPos, pDest);
- } while (true);
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- System.out.println(numberToChinese(1230400567.8934));
- }
- }
0 0
- 一个将小写数字转换成大写数字的工具类
- 小写数字转换成大写
- 小写数字转换成大写数字
- 小写数字转换成大写数字
- 小写数字转换大写
- java将大写数字转换成小写并输出
- 数字小写到英文大写的转换
- 一个将数字转换成金额大写的函数
- js中如何将小写数字金额转换成大写中文数字
- C# 将小写数字转换为 一般中文大写数字 和 人民币大写数字
- 汇编语言 将字符串中大写转换为小写 小写转换为大写 数字不变
- 将数字转换成大写
- 将数字转换成大写
- 将小写数字金额转换为大写得金额
- C/C++小写数字转换成大写数字
- 小写数字与大写数字转换
- java将小写金额转换为大写的工具类
- java将小写金额转换为大写的工具类
- 当失去深爱的人时
- JavaSript Array
- CListCtrl控件使用方法总结
- 自动生成@3x图插件
- object c_数据类型和运算符
- 一个将小写数字转换成大写数字的工具类
- mybatis配置详解
- 数组游标实现对数组的各种操作(PHP学习)
- linux下用iptables做本机端口转发方法
- 此 ObjectContext 实例已释放,不可再用于需要连接的操作
- 如何知道错误:Validation failed for one or more entities. See 'EntityValidationErrors' 的原因
- 新年度予算案―弱者へしわ寄せなのか
- 更新本地代码到服务器的shell脚本
- 计算机中基本类型float值表示和大小比较问题