阿拉伯数字转换成对应的大写中文输出

记得上次换工作时去某BOSS厂商面试时,有这样一道题(RT),当时只是简单的说说想法,今天有时间,把具体的细节实现了,如下:

 

/**
	 * Description: 把输入的阿拉巴数字转换成大写中文输出
	 * 细节实现:
	 * 1、阿拉伯数字到大写中文数字的对应转换
	 * 2、单位转换,9位以上统一单位是亿,5-8位统一单位是万
	 * 3、用求商运算判断整数位数据及单位
	 * 4、用求模运算,获得该数去整后的余数,如果余数位数与求余前长度相差大于1,输出描述中按照中文习惯加零
	 * 5、把输出描述中后边的零全部干掉
	 * @Version1.0 2011-12-19 下午02:16:54 mustang created
	 * @param value
	 */
	public static void changNum2Chinese(long value) {
		Map<String, String> danwei = new HashMap<String, String>();
		danwei.put("1", "");
		danwei.put("2", "拾");
		danwei.put("3", "佰");
		danwei.put("4", "仟");
		danwei.put("5", "万");
		danwei.put("6", "十");
		danwei.put("7", "百");
		danwei.put("8", "千");
		danwei.put("9", "亿");

		Map<String, String> daxie = new HashMap<String, String>();
		daxie.put("0", "");
		daxie.put("1", "壹");
		daxie.put("2", "贰");
		daxie.put("3", "叁");
		daxie.put("4", "肆");
		daxie.put("5", "伍");
		daxie.put("6", "陆");
		daxie.put("7", "柒");
		daxie.put("8", "捌");
		daxie.put("9", "玖");
		String str = "";
		long shang = 0;
		long yushu = value;
		long length = (yushu + "").length();
		while (length > 0) {
			shang = yushu / (long) Math.pow(10, length - 1);
			yushu = yushu % (long) Math.pow(10, length - 1);

			str += daxie.get(shang + "") + danwei.get(length + "");
			long nlength = (yushu + "").length();

			if (length > 9 && nlength < 9) {
				str += "亿";
			}
			if (length > 5 && nlength < 5) {
				str += "万";
			}

			if (length - nlength > 1) {
				str += "零";
			}

			if (length == 1) {
				length = 0;
			} else {
				length = (yushu + "").length();
			}
		}
		while (str.endsWith("零")) {
			str = str.substring(0, str.length() - 1);
		}
		System.out.println(str);
	}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值