资源简介
中科大软院,软侧实验,人民币大小写转换,附带实验源码以及实验报告,仅供学习参考
代码片段和文件信息
/**
*
*/
package com.su.biancheng;
import java.math.BigDecimal;
import java.util.Scanner;
/**
* @title NumericConvertToRMB.java
* @author Shuai
* @date 2016-5-4下午7:44:15
*/
public class NumericConvertToRMB {
// 首先,数字应该分段,分成万以下、万、亿、兆(后面单位暂不罗列)这几个段
// 其次,每个段分别是个十百千四个单位,如12345678,转成大写是:壹仟贰佰叁拾肆 万 伍仟陆佰柒拾捌
// 最后,处理0的问题,3003-->叁仟零叁,303-->叁佰零叁,在段内连续出现一个或多个0时,只出现一个零。300000300-->叁亿零叁佰
// 总之,在连续出现多个0的时候,只保留一个零。而需要注意:300-->叁佰,在段内最后不管连续出现多少0,都忽略
public static final char[] NUMBER_CHAR = “零壹贰叁肆伍陆柒捌玖“.toCharArray(); // 大写数字
public static final String[] IN_UNIT_CHAR = { ““ “拾“ “佰“ “仟“ }; // 段内字符
public static final String[] UNIT_NAME = { ““ “万“ “亿“ “万亿“ }; // 段名
public static String numericConvertToRMB(double value) {
String valStr = new BigDecimal(Double.toString(value)).multiply(
new BigDecimal(“100“)).toString();
if (valStr.indexOf(“.“) > 0) {
valStr = valStr.substring(0 valStr.indexOf(“.“));//默认保留小数点后两位
}
StringBuilder prefix = new StringBuilder(); // 整数部分转化的结果
StringBuilder suffix = new StringBuilder(); // 小数部分转化的结果
// 只有小数部分
if (valStr.length() <= 2) {
System.out.println(valStr);
prefix.append(“零元“);
if (valStr.equals(“0“)) {
suffix.append(“整“);
} else if (valStr.length() == 1) {
suffix.append(NUMBER_CHAR[valStr.charAt(0) - ‘0‘]).append(“分“);
} else {
suffix.append(NUMBER_CHAR[valStr.charAt(0) - ‘0‘]).append(“角“);
suffix.append(NUMBER_CHAR[valStr.charAt(1) - ‘0‘]).append(“分“);
}
} else {
int flag = valStr.length() - 2;
String head = valStr.substring(0 flag); // 取整数部分
String rail = valStr.substring(flag); // 取小数部分
// 处理整数位
char[] ch = head.toCharArray();
int zeroNum = 0; // 连续零的个数
for (int i = 0; i < ch.length; i++) {
int index = (ch.length - i - 1) % 4; // 取段内位置,3、2、1、0
int indexLoc = (ch.length - i - 1) / 4; // 取段位置,3、2、1、0
if (ch[i] == ‘0‘) {
zeroNum++;
} else {
if (zeroNum != 0) {
if (index != 3) {
prefix.append(“零“);
}
zeroNum = 0;
}
prefix.append(NUMBER_CHAR[ch[i] - ‘0‘]); // 转换该位置的数
prefix.append(IN_UNIT_CHAR[index]); // 添加段内标识
}
if (index == 0 && zeroNum < 4) // 添加段名
{
prefix.append(UNIT_NAME[indexLoc]);
}
}
prefix.append(“元“);
// 处理小数位
if (rail.equals(“00“)) {
suffix.append(“整“);
} else if (rail.startsWith(“0“)) {
suffix.append(“零“).append(NUMBER_CHAR[rail.charAt(1) - ‘0‘]).append(“分“);
} else if(rail.charAt(1)-‘0‘==0){
suffix.append(NUMBER_CHAR[rail.charAt(0) - ‘0‘]).append(“角“);
} else {
suffix.append(NUMBER_CHAR[rail.charAt(0) - ‘0‘]).append(“角“);
suffix.append(NUMBER_CHAR[rail.charAt(1) - ‘0‘]).append(“分“);
}
}
return “人民币“+prefix.append(suffix).toString();
}
public static void main(String[] args){
System.out.print(“请输入人数字:“);
Scanner scanner = new Scanner(System.in);
try{
double value = scanner.nextDo
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3692 2016-05-05 12:08 SA15225113宿帅软侧实验1\NumericConvertToRMB.java
文件 116671 2016-05-05 11:32 SA15225113宿帅软侧实验1\SA15225113宿帅软件测试实验1.docx
目录 0 2016-06-05 23:15 SA15225113宿帅软侧实验1\
- 上一篇:四轴飞控源码 PID参考apm 采用了dmp自带解算
- 下一篇:中科大软院软件测试3
相关资源
- 中科大软院软件测试3
- 2-数理统计学教程陈希孺编著2009中科
- 概率论与数理统计陈希孺编著2009中科
- 中科大信号与系统辅导课笔记
- 2.5 SDNv2.pdf-中科大高级计算机网络课件
- 华中科大组成原理课件
- 中科大834考研微机原理与接口技术周
- 多速率数字信号处理_中科大
- 中科大2019智能控制考试试卷.docx
- 近世代数引论(第3版) 冯克勤 李尚
- 中科大多速率数字信号处理课件及作
- 中科大历年软件工程考研真题
- 中科大计算机模式识别读书报告作业
- 偏微分方程:第二版_中科大_陈祖墀编
- CSAPP课件-中科大
- 软件体系结构作业和答案 2019级中科大
- 中科大算法导论期末考试试卷
- 中科大密码学
- 华中科大先进光通信系统课件
- 中科大并行计算经典课件
- 中科大自然语言理解课程ppt含往年试
- 中国科学技术大学-研究生组合数学
- 算法导论的教学配套ppt——中科大
- 中科大软院软件体系结构笔记Basic C
- 中科大计算机算法13-17年期末试卷
- 中科大fluent讲稿
- 中科大18级组合数学课后习题答案
- 中科大机器学习读书报告
- 代数结构中科大版部分答案
- 中科大高级操作系统资料
评论
共有 条评论