Dana告诉你如何将数字现金金额转换成大写格式
[示例描述]
在处理财务账目时,一般需要用文字表示金额。如果你在银行存钱或转账,你还需要转账数字黄金
金额以大写形式书写。换句话说,如果你想转123,456元,那么
需要写“十二万三千四百五十六元整”。对于这种感觉
如果它不仅麻烦而且容易出错,那么我们
可以设计一个程序来自动转换数字格式。这个例子
实现了小写金额到文字中金额的转换,实例运行效果如下
如图4.2所示。
图4.2将数字现金金额转换为大写格式
[实施过程]
(1)在Eclipse中创建新的项目MoneyConvert,并在其中创建一个MoneyConvert.java文件。
在这个类的main方法中创建一个标准输入流的scanner对象,接收用户输入的数字量。然后过了之后
convert()方法将此金额转换为单词形式的金额字符串格式,并将其输出到控制台。核心代码如下:
公共静态void main(String[] args) {
扫描仪扫描=新扫描仪(system . in);//创建扫描仪
System.out.println("请输入金额");
//获取金额转换后的字符串
string convert = convert(scan . NextDouble());
system . out . println(convert);//输出转换结果
}
(2)编写金额转换方法convert(),在主方法中调用,用于将金额数字转换为大写格式
转换。在此方法中,创建了一个十进制格式类的实例对象,并且数量由此格式化程序对象格式化。
只保留三个小数位。然后调用getInteger()和getDecimal()方法转换整数和小数部分,并返回
转换后的结果。关键代码如下:
公共静态字符串转换(双d) {
//实例化抽取格式对象
十进制格式df =新的十进制格式(" #0。###");
//双重数字格式
string strNum = df . format(d);
//确定是否包含小数点
if (strNum.indexOf(" . ")) != -1) {
String num = strNum.substring(0,strNum.indexOf(" . ")));
//整数部分大于12,无法转换
if (num.length()>;12) {
System.out.println("数字太大,无法完成转换!");
return
}
}
string point = ";//小数点
if (strNum.indexOf(" . ")) != -1) {
Point =“元”;
} else {
Point =“元”;
}
//转换结果
字符串结果= getInteger(strNum)+point+getDecimal(strNum);
if(result . starts with(" yuan ")){//判断字符串是否以" yuan "结尾
result = result.substring(1,result . length());//截取字符串
}
返回结果;//返回一个新字符串
}
(3)编写getInteger()方法,用于转换数字整数部分的大写格式。在该方法中,判断数字是否
包括小数点,然后将数字转换成字符串并颠倒字符顺序,为每个数字添加相应的大写单位。接近
关键代码如下:
公共静态字符串getInteger(字符串编号){
if (num.indexOf(" . ")) != -1) {//确定是否包含小数点
um = num.substring(0,num.indexOf(")。));
}
um = new StringBuffer(num)。反向()。toString();//反转字符串
StringBuffer temp = new StringBuffer();//创建一个StringBuffer
目标
for(int I = 0;i <。num . length();I++) {//加入单位
temp . append(STR _ UNIT[I]);
temp . append(STR _ NUMBER[num . charat(I)-48]);
}
um =温度反转()。toString();//反转字符串
Um = numReplace(num,“零拾取”,“零”);//替换字符串的字符
Um = numReplace(num,"零百","零");//替换字符串的字符
Um = numReplace(num,“零千”、“零”);//替换字符串的字符
Um = numReplace(num,“万”、“万”);//替换字符串的字符
Um = numReplace(num,“十亿”,“十亿”);//替换字符串的字符
um = UMRePlacement(num,“零零”、“零”);//替换字符串的字符
Um = numReplace(num,“十亿”,“十亿”);//替换字符串的字符
//如果字符串以零结尾,将被删除
If (num.lastIndexOf("零")== num.length()-1) {
um = num.substring(0,num . length()-1);
}
返回um;
}
公共静态字符串getDecimal(字符串编号){
//确定是否包含小数点
if (num.indexOf(" . ")) == -1) {
return
}
um = um.substring(num.indexOf(")。) + 1);
//反转字符串
um = new StringBuffer(num)。反向()。toString();
//创建一个StringBuffer对象
StringBuffer temp = new StringBuffer();
//加入公司
for(int I = 0;i <。num . length();i++) {
temp . append(STR _ UNIT 2[I]);
temp . append(STR _ NUMBER[num . charat(I)-48]);
}
um =温度反转()。toString();//替换字符串的字符
um = um RePlacement(num,“零角度”,“零”);//替换字符串的字符
Um = numReplace(num," zero "," zero ");//替换字符串的字符
Um = numReplace(num,"零厘米","零");//替换字符串的字符
um = UMRePlacement(num,“零零”、“零”);//替换字符串的字符
//如果字符串以零结尾,将被删除
If (num.lastIndexOf("零")== num.length()-1) {
um = num.substring(0,um . length()-1);
}
返回num
}
公共静态字符串替换(字符串编号,字符串旧字符串,字符串新字符串)
{
while (true) {
//判断字符串中是否包含指定的字符
if (num.indexOf(oldStr) == -1) {
打破;
}
//替换字符串
num = num.replaceAll(oldStr,Newstr);
}
//返回被替换的字符串
返回um;
}
[代码分析]
实现这个例子的关键在于以下几点:
格式化数字,如果有小数部分,将其转换为精确到厘米的3位小数。
将整数部分和小数部分分别转换成大写格式,并插入它们的单位(1亿,1000万...).
将转换后的整数部分和小数部分合并。
[知识拓展]
DecimalFormat类可以指定一个格式化模板来格式化浮点数,比如保留几个小数。通过调用这个类,
的format()方法可以使用指定的模板格式化任意浮点数。
1.《数字转换成大写金额 达内告诉你如何将数字货币金额转换为大写格式》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《数字转换成大写金额 达内告诉你如何将数字货币金额转换为大写格式》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/yule/1049958.html