做接口自动化是网站登录加密建设婚恋网站
做接口自动化是网站登录加密,建设婚恋网站,做半成品网站,这么注册免费网站实现浮点数转换成人民币读法字符串
将浮点数转换成人民币读法字符串#xff0c; 例如#xff1a; 将1006.333转换为壹千零陆元叁角叁分。
整体解析#xff1a; 将浮点数分成整数部分和小数部分#xff0c;分开处理整数部分和小数部分。
小数部分的处理比较简单#xff…实现浮点数转换成人民币读法字符串
将浮点数转换成人民币读法字符串 例如 将1006.333转换为壹千零陆元叁角叁分。
整体解析 将浮点数分成整数部分和小数部分分开处理整数部分和小数部分。
小数部分的处理比较简单截取保留两位数字并将其转换成几角几分的字符串即可。
整数部分可以以4位数字分为几个数组每一个4位数字都是几千几百几十几添加适当的单位。
这4位数字若出现在14位则后面添加‘元’若出现在58位则添加‘万’若出现在9~12位则添加‘亿’。
超过12位以后暂不考虑实际上超过12位数后double类型存储溢出会造成数据的错误。
程序解析 将浮点数分成整数部分和小数部分字符串只要把double型的浮点数强制转换成long型即可得到整数部分
将double型的浮点数减去long型的整数部分即可得到浮点数的小数部分由于只需取两位则乘以100再用
Math.round函数取整得到小数部分。用“zheng”“ ”或String.valueOf(xiao)将整数转换为字符串。
将小数部分的字符串逐个进行判断在其后面适当的增加角、分即可转换成功。
将整数部分的字符串补零使其字符串长度成为4的倍数以便4位一组的分组。使用字符串截取函数截取后4 位的字符串并使原字符串更新为除去后4位以后的字符串。
4位一组的字符串进行汉字字符的转换若非最后一位数字且数字不为零则需添加单位。 每四位的已转换好的汉字字符串连接时需注意顺序。
特殊情况 若数字小数点后一位为0如19.08则需在小数部分转换时考虑小数部分字符串的长度若长度为1则特殊处理。
若数字如10009所示后四位截取后为0009转换时易出现错误需将其转换为字符串9后再将其进行汉字字符的 转换。
若数字如1009所示2个零相邻则需对转换时单个字符为0时的前一个字符进行判断是否需要进行转换操作。
若数字如1890所示最后一位为零则需对转换后的字符串进行判断最后一个字符是否为零是否需要删去。
若数字如0.89或10000.89所示截取的4位字符串位0则需单独进行转换操作。 import java.util.Arrays;
import java.util.Scanner;// 编写一个程序将浮点数转换成人民币读法字符串例如将1006.333转换为壹千零陆元叁角叁分public class Rmb {private String[] str1 {零,壹,贰,叁,肆,伍,陆,柒,捌,玖};private String[] str2 {十,百,千};private String[] str3 {角,分};private String[] str4 {元,万,亿};
// 把浮点数分解成整数部分字符串private String divadeZheng(double num){ long zheng (long)num;
// 整型转换成字符串return zheng ; }
// 把浮点数分解成小数部分字符串private String divadeXiao(double num){long zheng (long)num;
// 得到浮点数的小数部分long xiao Math.round((num-zheng)*100);
// 用方法把整型转换成字符串return String.valueOf(xiao);}// 把小数部分的数字字符串转换成汉字字符串private String toStr1(String xiao){String re1 ;int len xiao.length();if(len2){for(int i 0;i2;i){
// 把字符串转换成数字int num xiao.charAt(i) - 48;
// 数字不为零则需要加单位为零则不操作if(num!0){re1 str1[num] str3[i];}}}
// 若长度为1例12.09小数部分为9if(len1xiao.charAt(0)!0){int num xiao.charAt(0) - 48;
// 此时只有分加单位str3【1】re1 str1[num] str3[1];}return re1;}// 把一个四位的数字字符串变成汉字字符串private String toStr(String zheng){String re ;int j 0;int lenz zheng.length();
// 特殊情况如输入0.89时整数字符串为0的处理if(zheng.charAt(0)0lenz1){re 零;return re;}
// 遍历每一位数字for(int i 0;ilenz;i){int num zheng.charAt(i) - 48;
// 若不是最后一位数字且数字不为零则需要添加单位if(i!lenz-1num!0){re str1[num]str2[lenz-2-i];}
// 对于连续0出现的特殊处理如1009第二个零不进行操作else if(!(num0re.charAt(j-1)零)){re str1[num];}j re.length();}
// 对特殊情况最后一位是零的处理如1990删除掉末尾的零if(re.charAt(j-1)零){re re.substring(0, j-1);}return re;}
// 对于金额的整数部分在12位数以内的处理以4位数为一组
// 如1234亿,5678万,1234元.89private String zhengDivade(String zheng){int len zheng.length();String Re ; int n 0;
// 判断整数部分的长度考虑需要分几个组if(len9)n 3; else if(len5)n 2;else if(len1)n 1;
// 若位数非4的倍数则在前面补0直到位数为4的倍数为止
// 如 12,2345补为0012,2345if(len%4!0){String zh ;int s len%4;
// 在前面补0for(int k0;k(4-s);k){zh 0;}zh zheng;zheng zh;}
// 进行n个组合的串联
// 进行n次循环for(int i0;in;i){String Zheng ; String sss ;
// 长度在变化len zheng.length();
// 提取出整数部分后四位进行分开的转换Zheng zheng.substring(len-4);
// 除去已经提取的字符串以外的字符串字符串更新zheng zheng.substring(0, len-4);int m 0,me0;
// 把字符串转换成整形数如 0012换成12for(int j3;j0;j--){m (int) ((Zheng.charAt(j)-48)*Math.pow(10, 3-j));me m;}
// 把数字12装换成字符串12Zheng String.valueOf(me);
// 把字符串12换成 壹拾贰sss this.toStr(Zheng);
// 衔接上 元 等单位再加上已经转换好的 汉字字符串 此处注意每组字符串间的顺序sss str4[i]Re;Re sss;}return Re; }// 主方法输入金额并将整数部分和小数部分联接 public static void main(String[] args) {// TODO Auto-generated method stubRmb s new Rmb();System.out.println(请输入整数部分为十二位以内的金额);Scanner in new Scanner(System.in);double a in.nextDouble();System.out.println(人民币读法为);
// 将整数部分的汉字字符串和小数部分的汉字字符串联接System.out.println(s.zhengDivade(s.divadeZheng(a))s.toStr1(s.divadeXiao(a)));}}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89101.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!