日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

人民币转换(阿拉伯数字转为中文大写的人民币格式)

發布時間:2023/12/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 人民币转换(阿拉伯数字转为中文大写的人民币格式) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

人民幣轉換

1、中文大寫金額數字前應標明“人民幣”字樣。中文大寫金額數字應用壹、貳、叁、肆、伍、陸、柒、捌、玖、拾、佰、仟、萬、億、元、角、分、零、整等字樣填寫。

2、中文大寫金額數字到“元”為止的,在“元”之后,應寫“整字,如¥?532.00應寫成“人民幣伍佰叁拾貳元整”。在”角“和”分“后面不寫”整字。

3、阿拉伯數字中間有“0”時,中文大寫要寫“零”字,阿拉伯數字中間連續有幾個“0”時,中文大寫金額中間只寫一個“零”字,如¥6007.14,應寫成“人民幣陸仟零柒元壹角肆分“。

輸入描述:

輸入一個double數

輸出描述:

輸出人民幣格式

示例1:

輸入

151121.15

輸出

人民幣拾伍萬壹仟壹佰貳拾壹元壹角伍分

特殊用例測試:

分析:

//字符串整數部分不超過13位

String[] numStrs = {"零","壹","貳","叁","肆","伍","陸","柒","捌","玖"}; //存大寫的數字
String[] unitStrs1 = {"角","分"}; //小數部分的單位
String[] unitStrs2 = {"","拾","佰","仟"}; //整數部分的單位
String[] unitStrs3 = {"","萬","億","萬億"}; //整數部分的單位

將輸入以字符串形式接收(記為n,防止越界),結果用字符串result表示。

將字符串n以小數點分隔為兩部分,前一部分為整數部分,轉為數組記為chars,后一部分為小數部分,記為strs2.

1.小數部分:

(1)判斷字符串n是否為整數:小數部分長度為1時判斷這一位是否為0,長度為2時判斷兩位是否都為0,后面若還有輸入不計,若為整數,result += "整";

(2)非整數時遍歷字符串strs2(最多遍歷兩位),將對應的大寫數字+單位依次加入到result中,注意若角為0時直接不讀角(如:5.05為“伍元伍分”)

2.整數部分:

(1)判斷strs1是否長度為1且chars[0]='0',是則說明不用讀整數部分,不是則將“元”加入result中。(如:0.05為“伍分”)

(2)將strs1中的數反向讀取并四個為一組劃分,count記錄第幾組(從0開始),每次將這四個一組的數先轉換,單位對應unitStrs2 ,記錄在str中,而str對應的單位在unitStrs3中,即unitStrs3[count],將它們拼接到result中,即result = str + unitStrs3[count] + result;

(4)關于四位一組內部的數和對應單位,需要判斷,這個數是不是0,0的特殊情況:0在整數部分最后一位時不讀(10.05,人民幣拾元伍分);chars中的下一位為0時不讀(100.00,人民幣壹佰元整);連續中間有零時只讀一個,也就是在上一位已讀過,此時不讀(1001.00,人民幣壹仟零壹元整),當1出現在第一位且是十位時不讀1(防止11.00讀為壹拾壹元整)

3.在result前加上人民幣并輸出。

代碼:

import java.util.*;public class Main {public static void main(String[] args) {//字符串長度整數部分不超過13位Scanner in = new Scanner(System.in);String[] numStrs = {"零","壹","貳","叁","肆","伍","陸","柒","捌","玖"};String[] unitStrs1 = {"角","分"};String[] unitStrs2 = {"","拾","佰","仟"};String[] unitStrs3 = {"","萬","億","萬億"};while(in.hasNext()){String n = in.nextLine();if(n.split("\\.")[0].length() >13){System.out.println("字符串長度整數部分不超過13位");}String result = "";String strs2 =n.split("\\.")[1];//小數點之后if((strs2.length()==1 && strs2.charAt(0)=='0')||(strs2.length()>1&& strs2.charAt(0)=='0'&& strs2.charAt(1)=='0')){//整數result += "整";}else {//非整數for (int i = 0; i < Math.min(2, strs2.length()); i++) {int tmp = strs2.charAt(i) - '0';if (tmp != 0) {result += numStrs[tmp] + unitStrs1[i];}}}char[] chars = n.split("\\.")[0].toCharArray();//0元時不寫元if(!(chars.length == 1 && chars[0]=='0')){result = "元"+result;}//小數點之前int count = -1;for(int j=chars.length-1; j>=0;){//以四個為一組String str = "";for(int i=0; i<4 &&j>=0;i++){String num = numStrs[chars[j]-'0'];//當前位的數字if(num.equals("零")){//這個零不能出現在最后一位(10.05)//下一位不是零(100),連續中間有零時只讀一個(1001)if(chars.length-1-j != 0 && chars[j+1]!='0' && str.charAt(0)!='零'){str = num + str;}}else if(j==0 && i== 1 &&num.equals("壹")){//防止壹拾壹元等情況的出現str = unitStrs2[i] + str;}else{str = num + unitStrs2[i] + str;}j--;}count++;result = str + unitStrs3[count] + result;}result = "人民幣"+ result;System.out.println(result);}} }

?

總結

以上是生活随笔為你收集整理的人民币转换(阿拉伯数字转为中文大写的人民币格式)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。