笔试题:金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥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));
}
}
笔试题:金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出的更多相关文章
- java算法面试题:金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。
package com.swift; public class RenMingBi { private static final char[] data = new char[]{'零','壹','贰 ...
- java面试笔试题大汇总
第一,谈谈final, finally, finalize的区别. 最常被问到. 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以 ...
- RMB转换人民币大小金额
MXS&Vincene ─╄OvЁ &0000015 ─╄OvЁ MXS&Vincene MXS&Vincene ─╄OvЁ:今天很残酷,明天更残酷,后天很美好 ...
- ASP.NET转换人民币大小金额
public class DecimalToRMB { /// <summary> /// 转换人民币大小金额 /// </sum ...
- C#随机生成不重复邀请码&创建登录Token&转换人民币大小金额
/// <summary> /// 创建登陆Token /// </summary> /// <param name="length">< ...
- 收藏所用C#技术类面试、笔试题汇总
技术类面试.笔试题汇总 注:标明*的问题属于选择性掌握的内容,能掌握更好,没掌握也没关系. 下面的参考解答只是帮助大家理解,不用背,面试题.笔试题千变万化,不要梦想着把题覆盖了,下面的题是供大家查漏补 ...
- 从阿里巴巴笔试题看Java加载顺序
一.阿里巴巴笔试题: public class T implements Cloneable { public static int k = 0; public static T t1 = new T ...
- C#经典笔试题-获取字符串中相同的字符以及其个数
public Dictionary<char,int> GetStrSameAs(string str){ //将字符串转换成一个字符数组. char[] charArray=str.To ...
- [c#基础]关于try...catch最常见的笔试题
引言 在翻看之前总结的常见面试题中,关于try...catch异常处理的还是蛮多了,今天看到这个面试题,也就重新学习一下. try..catch语法 try-catch语句由一个try块后跟一个或多个 ...
随机推荐
- Tomcat使用startup启动,一闪而过,如何查看出错信息
解决办法:打开startup.bat,通过使用run命令在原有启动窗口显示出错信息. 在startup.bat中找到:call "%EXECUTABLE%" start %CMD_ ...
- 删除除了 id 号不同,其他都相同的学生冗余信息
删除除了 id 号不同,其他都相同的学生冗余信息2.学生表 如下:id 号 学号 姓名 课程编号 课程名称 分数1 2005001 张三 0001 数学 692 2005002 李四 0001 数学 ...
- Windows 取得至高无上的权限
第一步:gpedit.msc 第二步:计算机配置-->windows 设置 -->安全设置 -->安全选项 -->用户账户控制 -->以管理员批准模式运行所有管理员 -- ...
- 常见iis错误之一
1.win7配置iis 出现:HTTP 错误 403.14 - Forbidden 打开 IIS 管理器. 在“功能”视图中,双击“目录浏览”. 在“目录浏览”页上,在“操作”窗格中单击“启用”. 确 ...
- 微信平台BAE
http://www.2cto.com/kf/201405/299487.html http://blog.csdn.net/lyq8479/article/details/26104667 http ...
- 老生常谈--Js继承小结
一直以来,对Js的继承有所认识,但是认识不全面,没什么深刻印象.于是,经常性的浪费很多时间重新看博文学习继承,今天工作不是特别忙,有幸看到了http://www.slideshare.net/stoy ...
- c++ 静态多态与动态多态
多态polymorphism是指具有多种形态的情况,它能根据单一的标记关联不同的行为.多态是面向对象程序设计的基础.在面向对象程序设计中的多态是一种运行时的多态.C++中有两种多态,称为动多态(运行时 ...
- POJ 1721 CARDS(置换群)
[题目链接] http://poj.org/problem?id=1721 [题目大意] 给出a[i]=a[a[i]]变换s次后的序列,求原序列 [题解] 置换存在循环节,因此我们先求出循环节长度,置 ...
- Linux2.6中的Slab层
还记得一个进程创建的时候是什么给它分配的“进程描述符”吗?没错,是slab分配器,那么,这个slab分配器是个什么东西呢? 分配和释放数据结构是所有内核中最普遍的操作之一.为了 ...
- Android-自己定义显示价格的PriceView
转载请标明出处:http://blog.csdn.net/goldenfish1919/article/details/44418883 先看一下我们要做的效果: 价格分成了3部分.前面是一个¥,中间 ...