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

收集这道题目原因是以前做过,但是实现的很麻烦,这次看到别人写的感觉简单易懂。

从一个pdf看到,出处就不贴了 = 。=

public class RenMingBi {

    private static final char[] data = new char[] { ‘零‘, ‘壹‘, ‘贰‘, ‘叁‘, ‘肆‘,
            ‘伍‘, ‘陆‘, ‘柒‘, ‘捌‘, ‘玖‘ };
    private static final char[] units = new char[] { ‘元‘, ‘拾‘, ‘佰‘, ‘仟‘, ‘万‘,
            ‘拾‘, ‘佰‘, ‘仟‘, ‘亿‘,‘拾‘, ‘佰‘, ‘仟‘};

    // 简单那整数    int:-2147483648~2147483647
    public static String convert(long money) {
        StringBuffer sbf = new StringBuffer(40);
        int unit = 0;
        while (money != 0) {
            sbf.insert(0,units[unit++]);
            int number = (int) money % 10;
            sbf.insert(0, data[number]);
            money /= 10;
        }
        // System.out.println(sbf.toString());
        return sbf.toString().replaceAll("零[拾佰仟]", "零").replaceAll("零+亿","亿").replaceAll("零+万", "万")
                .replaceAll("零+元", "元").replaceAll("零+", "零").replaceAll("亿万", "亿");
    }
    //复杂带小数 long    :-2^63    +2^63-1
    public static String convert(double value) {
        long midVal = (long) (value * 100);
        String valStr = String.valueOf(midVal); // 转化成字符串
        String rail = valStr.substring(valStr.length() - 2); // 取小数部分

        long preint = (midVal / 100);
        String prefix = convert(preint);
        String suffix = "";
        // 处理小数点后面的数
        if (rail.equals("00")) {
            suffix = "整";
        } else {
            suffix = data[rail.charAt(0) - ‘0‘] + "角" + data[rail.charAt(1) - ‘0‘] + "分";
        }
        return prefix + suffix; // 返回正确表示
    }

    public static void main(String[] args) {
          System.out.println(convert(2000000007));
          System.out.println(convert(2000000007.211));
    }

}
时间: 2024-12-19 17:34:05

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

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

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

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

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<St

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

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

【苏宁易购笔试题】冒泡排序把数字“1492586&quot;排序成&quot;9865421&quot;然后生成新的字符串。

public class Bubble { public static void main(String[] args) { // TODO Auto-generated method stub String initial = "1492586"; StringBuffer sb = new StringBuffer(""); int[] array = new int[initial.length()]; for (int i = 0; i < initi

Java笔试题之《算法与编程》

算法与编程 1.判断身份证:要么是15位,要么是18位,最后一位可以为字母,并写程序提出其中的年月日. 答:我们可以用正则表达式来定义复杂的字符串格式,(\d{17}[0-9a-zA-Z]|\d{14}[0-9a-zA-Z])可以用来判断是否为合法的15位或18位身份证号码. 因为15位和18位的身份证号码都是从7位到第12位为身份证为日期类型.这样我们可以设计出更精确的正则模式,使身份证号的日期合法,这样我们的正则模式可以进一步将日期部分的正则修改为[12][0-9]{3}[01][0-9][

黑马程序员-入学笔试题

笔试结束,列一下笔试题和我的解答,最后得分29.7. 1. 编写一个类,在main方法中定义一个Map对象(采用泛型),加入若干个对象,然后遍历并打印出各元素的key和value. package com.itheima; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class Test1 { public static void m

给定一个数值,输出符合中国人习惯的读法--记一道笔试题

题目:给定一个数字,最大小于一万亿,输出符合中国人习惯的读法,例如: a.12输出:十二 b.102输出:一百零二 c.1002输出:一千零二 d.112输出:一百十二 e.10112输出:一万零一百十二 f.120000000:一亿二千万 g.11021002:一千一百零二万一千零二 h.11020102:一千一百零二万零一百零二 i.1000001:一百万零一 j.1000000001:十亿零一 嗯,一道笔试题,解的很没有节操,没有太好的思路,只能尽力抽取翻译过程中的共有代码,尽量写的不那么

转换人民币大小金额

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