人民币数字转换汉字【修改整理】
来源:互联网 发布:淘宝服装模特拍摄视频 编辑:程序博客网 时间:2024/06/06 01:15
package com.lengol.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Test {public static void main(String[] args) {String strNum = "";double dNum;System.out.println("输入:");BufferedReader br = new BufferedReader(new InputStreamReader(System.in));try {strNum = br.readLine();dNum = Double.parseDouble(strNum);System.out.println("四舍五入,精确到(分),转化成大写:");System.out.println(changeToBig(dNum));} catch (IOException e) {System.out.println("【读写异常】");} catch (NumberFormatException e) {System.out.println("【数字格式异常】");} catch (StringIndexOutOfBoundsException e) {System.out.println("【字符串索引越界异常】");} catch (ArrayIndexOutOfBoundsException e) {System.out.println("【数组索引越界异常】");} catch(Exception e){System.out.println("【其他异常】");}System.gc();}public static String changeToBig(double value) {char[] hunit = { '拾', '佰', '仟' }; // 段内位置表示char[] vunit = { '万', '亿' }; // 段名表示char[] digit = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' }; // 数字表示long midVal = (long) (value * 100 + 0.5); // 转化成整形,四舍五入String valStr = String.valueOf(midVal); // 转化成字符串if("0".equals(valStr)){return digit[0] + "圆整";}String head = valStr.substring(0, valStr.length() - 2); // 取整数部分String rail = valStr.substring(valStr.length() - 2); // 取小数部分String prefix = ""; // 整数部分转化的结果String suffix = ""; // 小数部分转化的结果// 处理小数点后面的数if (rail.equals("00")) { // 如果小数部分为0suffix = "整";} else {suffix = digit[rail.charAt(0) - '0'] + "角"+ digit[rail.charAt(1) - '0'] + "分"; // 否则把角分转化出来}// 处理小数点前面的数char[] chDig = head.toCharArray(); // 把整数部分转化成字符数组boolean preZero = false; // 标志当前位的上一位是否为有效0位(如万位的0对千位无效)byte zeroSerNum = 0; // 连续出现0的次数for (int i = 0; i < chDig.length; i++) { // 循环处理每个数字int idx = (chDig.length - i - 1) % 4; // 取段内位置int vidx = (chDig.length - i - 1) / 4; // 取段位置if (chDig[i] == '0') { // 如果当前字符是0preZero = true;zeroSerNum++; // 连续0次数递增if (idx == 0 && vidx > 0 && zeroSerNum < 4) {prefix += vunit[vidx - 1];preZero = false; // 不管上一位是否为0,置为无效0位}} else {zeroSerNum = 0; // 连续0次数清零if (preZero) { // 上一位为有效0位prefix += digit[0]; // 只有在这地方用到'零'preZero = false;}prefix += digit[chDig[i] - '0']; // 转化该数字表示if (idx > 0)prefix += hunit[idx - 1];if (idx == 0 && vidx > 0) {prefix += vunit[(vidx + 1) % 2];for (int j = 0; j < (vidx + 1) / 2 - 1; j++) {prefix += vunit[1];}}}}if (prefix.length() > 0)prefix += '圆'; // 如果整数部分存在,则有圆的字样return prefix + suffix; // 返回正确表示}}
0 0
- 人民币数字转换汉字【修改整理】
- 人民币数字转换为汉字
- 人民币数字转汉字
- Java人民币从数字形式转换成汉字(繁体)!
- excel人民币数字转换
- 数字到人民币转换
- 人民币、数字大小写转换
- 数字转换大写人民币
- 数字转换为人民币
- 人民币数字转换大小写
- 人民币数字大小写转换
- 人民币数字大写转换
- JS实现将数字金额转换为大写人民币汉字的方法
- 【java day4】人民币数字转汉字
- 数字到人民币转换(转)
- 数字到人民币转换(转)
- 数字转换人民币的类
- 数字转换为大写,人民币
- 文章标题 Hadoop:编写一个求和排序的MR
- ROS naviagtion analysis: costmap_2d--Costmap2D
- tomcat+nginx+memchaed+myeclipse2014
- 生产者消费者模式
- 如何让IDEA的properties中的中文进行unicode转码,正确显示
- 人民币数字转换汉字【修改整理】
- 蚁群算法
- Linux setup 安装命令
- 代码与人生
- Python访问Access数据库的需要注意的几点
- 对<action/> 和 <category/> 的理解
- 最长回文子串
- ubantu下安装hadoop+hive全解
- Android点击Button水波纹效果