金额转换,阿拉伯数字的金额转换成中国传统输出。

  1 package sfbc;
  2
  3 import java.text.DecimalFormat;
  4 import java.util.HashMap;
  5 import java.util.Map;
  6 /**
  7  * 金额转换,阿拉伯数字的金额转换成中国传统输出。
  8  * @author trfizeng
  9  *
 10  */
 11 public class FormateMoneyCN {
 12     // 阿拉伯数字对应的大写汉字
 13     public static final Map<String, String> NUMBER_CN = new HashMap<String, String>();
 14     // 大写单位
 15     public static final String[] UNIT_UP_CN = new String[] { "圆", "拾", "佰",
 16             "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟" };
 17     // 小数点后的大写单位
 18     public static final String[] UNIT_DOWN_CN = new String[] { "角", "分" };
 19     // 符号
 20     public static final Map<String, String> SINGLE = new HashMap<String, String>();
 21     static {
 22         NUMBER_CN.put(0 + "", "零");
 23         NUMBER_CN.put(1 + "", "壹");
 24         NUMBER_CN.put(2 + "", "贰");
 25         NUMBER_CN.put(3 + "", "叁");
 26         NUMBER_CN.put(4 + "", "肆");
 27         NUMBER_CN.put(5 + "", "伍");
 28         NUMBER_CN.put(6 + "", "陆");
 29         NUMBER_CN.put(7 + "", "柒");
 30         NUMBER_CN.put(8 + "", "捌");
 31         NUMBER_CN.put(9 + "", "玖");
 32
 33         SINGLE.put("-", "负");
 34         SINGLE.put("", "");
 35         SINGLE.put("+", "");
 36     }
 37
 38     public static String formateNumberToCn(double number) {
 39         String tFormateNumber = formateNumber(number);
 40         return numberToCn(tFormateNumber);
 41     }
 42
 43     // 格式化数据为小数点后面2位
 44     public static String formateNumber(double number) {
 45         DecimalFormat df = new DecimalFormat("#.##");
 46         return df.format(number);
 47     }
 48
 49     // 把阿拉伯数据转化成中国大写
 50     public static String numberToCn(String number) {
 51         StringBuffer sb = new StringBuffer();
 52         // 得到小数点位置
 53         int point = number.indexOf(".");
 54         // 提取符号
 55         String single = SINGLE
 56                 .get(number.substring(0, number.indexOf("-") + 1));
 57         // 无符号的数字
 58         number = number.substring(number.indexOf("-") + 1);
 59         point = number.indexOf(".");
 60         // 整数部分
 61         char[] upNumber = point > 0 ? number.substring(0, point).toCharArray()
 62                 : number.toCharArray();
 63         // 用来控制连续出现多个零的情况
 64         char tUpNumber = ‘ ‘;
 65         for (int i = upNumber.length; i > 0; i--) {
 66             // 阿拉伯数字对应的大写汉字
 67             String tN = tUpNumber == ‘0‘ && upNumber[upNumber.length - i] == tUpNumber ? ""
 68                     : NUMBER_CN.get(upNumber[upNumber.length - i] + "");
 69             if (!"".equals(tN)) {
 70                 // 如果是零后面就没单位
 71                 sb.append(tN + ("零".equals(tN) ? "" : UNIT_UP_CN[i - 1]));
 72             }
 73             tUpNumber = upNumber[upNumber.length - i];
 74         }
 75         // 去除整数部分最后的零
 76         if ("零".equals(sb.substring(sb.length() - 1))) {
 77             sb.deleteCharAt(sb.length() - 1);
 78         }
 79         // 如果有小数
 80         if (point > 0) {
 81             // 小数部分
 82             char[] downNumber = number.substring(point + 1).toCharArray();
 83             for (int i = 0; i < downNumber.length; i++) {
 84                 sb.append(NUMBER_CN.get(downNumber[i] + "")
 85                         + (downNumber[i] == ‘0‘ ? "" : UNIT_DOWN_CN[i]));
 86             }
 87             // 去除开头的零
 88             if ("零".equals(sb.substring(0, 1))) {
 89                 sb.deleteCharAt(0);
 90             }
 91         } else {
 92             // 没小数就是整
 93             sb.append("整");
 94         }
 95         return single + sb.toString();
 96     }
 97
 98     public static void main(String[] args) {
 99         double number1 = 600073000.034;
100         double number2 = 600073000.036;
101         double number3 = 600073000;
102         System.out.println("\"" + number1 + "\":" + formateNumberToCn(number1));
103         System.out.println("\"" + number2 + "\":" + formateNumberToCn(number2));
104         System.out.println("\"" + number3 + "\":" + formateNumberToCn(number3));
105     }
106 }

"6.00073000034E8":陆亿零柒万叁仟零叁分
"6.00073000036E8":陆亿零柒万叁仟零肆分
"6.00073E8":陆亿零柒万叁仟整

时间: 2024-08-08 22:01:29

金额转换,阿拉伯数字的金额转换成中国传统输出。的相关文章

Java金额转换_阿拉伯数字转换成中国传统形式

这个题目我在网上看到有好多种做法,我自己也想出了一种做法:不过因为时间不够,只能转换整数,没把角分弄进去. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /* * 思路: * 1.定义两张表,存储中文数字和货币单位. * 2.键盘录入使用IO流的BufferedReader进行接收键盘录入. * 3.把录入的阿拉伯数字弄成字符数组,把每个数字所在位置的角标对

笔试题:金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-&gt;(一千零一拾一元整)输出

收集这道题目原因是以前做过,但是实现的很麻烦,这次看到别人写的感觉简单易懂. 从一个pdf看到,出处就不贴了 = .= public class RenMingBi { private static final char[] data = new char[] { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' }; private static final char[] units = new char[] { '元', '拾', '佰', '

金额转换——阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-&gt;(一千零一拾一元整)

public class RenMingBi { private static final char[] data = new char[]{ '零','壹','贰','叁','肆','伍','陆','柒','捌','玖' }; private static final char[] units = new char[]{ '元','拾','佰','仟','万','拾','佰','仟','亿' }; public static void main(String[] args) { // TODO

转换人民币大小金额

C#控制台测试 class Program { static void Main(string[] args) { decimal rmb = Convert.ToDecimal(Console.ReadLine()); Rmb.CmycurD(rmb); Console.ReadLine(); } } /// <summary> /// Rmb 的摘要说明. /// </summary> public static class Rmb { /// <summary>

ASP.NET转换人民币大小金额

public class DecimalToRMB    {        /// <summary>         /// 转换人民币大小金额         /// </summary>         /// <param name="num">金额</param>         /// <returns>返回大写形式</returns>         public static string Cmyc

RMB转换人民币大小金额

MXS&Vincene  ─╄OvЁ  &0000015 ─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好,但是绝大部分人是死在明天晚上,只有那些真正的英雄才能见到后天的太阳. MXS&Vincene  ─╄OvЁ:We're here to put a dent in the universe. Otherwise why else even be here? 正文>>>>>

3、从键盘上接收一个字母,判断是否是大写字母,如果是则转换成小写字母输出

3.从键盘上接收一个字母,判断是否是大写字母,如果是则转换成小写字母输出,否则直接输出 #include <stdio.h>void main(){   char x=0;    printf("请输入一个字母:");    scanf("%c",&x);    x>=65&&x<=90? printf("小写字母为:%c",x+32): printf("%c",x);    p

Word文件格式转换:Word如何转换成PDF格式

Word文件如何转换成PDF格式呢? 可能大部分人都知道PDF转换成word格式,毕竟这也是一种常用的转换.就word转换成PDF小编在这里告诉大家一种方法! 1.首先我们需要借助辅助工具进行文件格式转换,大家可以在百度浏览器上搜索迅捷PDF转换器,安装在我们所操作的电脑上. 2.鼠标双击运行打开PDF转换器,在左侧栏目中选择到其他文件转换PDF,栏目下有"word转换PDF",关于其它功能就先不介绍了.3.软件下面会看到一些按钮,在这点击"添加文件"在跳转出来的文

CAD图纸转换成PDF格式输出质量怎么进行改变?

CAD图纸转换成PDF格式输出质量怎么进行改变?经常是从事CAD制图的小伙伴们都知道,之前是一张都是使用CAD制图软件来将一张CAD图纸文件进行转换成其他的格式,那么现在都是使用CAD转换器软件来进行对图纸的格式转换,今天小编就要来教教大家CAD图纸转换成PDF格式输出质量怎么进行改变的全部操作步骤,希望能够帮助到大家! 步骤一:首先需要进行打开的是您电脑上面的CAD转换器软件,小编在这里使用的就是这款"迅捷CAD转换器"软件,有需要的可以去到官网上进行下载或是直接去到软件商店中进行下