Rmb.java
public class Rmb { /** *Informasi dasar dan pengoperasian RMB*@author weinee *@versi 1.0 */ nomor ganda; //Jumlah RMB private String[] hanArr = {"zero", "一", "二" , "三", "四", "五", "鲁", "旒", "八", "九" };//Simbol penghitungan karakter Cina private String[] unitArr = {"", "十", "百", "千"};//Unit penghitungan karakter Cina private String[] unitArrs = {"万", "Billion", "万", "十大", "万" , " "Miliar", "Wan", "Yuan"}; //Tambahkan unit secara berurutan//pribadi String[] unitArr = {"Wan", "Miliar"}; //Satuan besar untuk menghitung karakter Cina public Rmb( ){} /** *Konstruktor menginisialisasi jumlah RMB*@param Nomor RMB inisialisasi yang diberikan*/ public Rmb(bilangan ganda){ this.number = number; } /** *Dekomposisi bilangan floating point menjadi bagian panjang dan string bagian desimal, The RMB diganti dengan bilangan bulat. Ada kesalahan pada nilai kritis bilangan floating point saat mengambil bagian desimal*@return Mengembalikan larik string yang terdekomposisi. Elemen larik pertama adalah bagian bilangan bulat, dan yang kedua adalah bagian desimal string*/ String publik [] DivideNum(){ double num = Math.round(number*100);//Membulatkan bilangan menjadi bilangan bulat long integerPart = (long)num; //Ambil dua tempat desimal menjadi bilangan bulat untuk menghindari penggunaan pengurangan //double desimalPart = num -integerPart;//Bagian desimal, kesalahan terjadi ketika string kritis DecimalsPartStr; long b = integerPart % 10; //Digit kedua setelah koma desimal long a = (integerPart/10) % 10; //Digit pertama setelah koma desimal integerPart /= 100; if(a==0 && b==0){ desimalPartStr = null; ; } return new String[] {String.valueOf(integerPart), desimalPartStr} } /** *Konversi karakter numerik ke dalam pengucapan RMB Cina*@return Mengembalikan bentuk string pengucapan RMB Cina*/ public String toHanStr(){ String[] results = new String[9]; //Digunakan untuk menyimpan sementara string numerik String[] yang dibagi menjadi empat digit setiap empat digit resultStrs = new String[9];//Digunakan untuk menyimpan sementara pembacaan RMB yang dikonversi setelah setiap segmentasi empat digit String result = "";//Hasil konversi akhir String[] DivideStr = DivideNum(); //Dapatkan string bagian panjang dan desimal tempat bilangan floating point didekomposisi. Elemen array pertama adalah string bagian bilangan bulat, dan yang kedua adalah string bagian desimal results[8] = DivideStr[1]; i =divideStr[0].panjang(), j=8; i>0&&j>0 ; i-=4,j--){ coba{ hasil[j-1] = bagiStr[0].substring(i-4 , Saya); }catch(Pengecualian e){ hasil[j-1] = membagiStr[0].substring(0, i); } if(hasil[8] == null){ hasilStrs[8] = "keseluruhan"; }else if(hasil[8].charAt(1) == '0'){ resultStrs[8] = hanArr[hasil[8].charAt(0) - 48] + "角"; //Ubah angka menjadi huruf besar Cina sesuai dengan kode ASCII dan hanArr array}else{ resultStrs[8] = hanArr[results[8].charAt(0) - 48] + "角" + hanArr[ hasil[8].charAt(1) - 48] + "titik"; if(hasil[i] != null){ hasilStrs[i] = ""; hasilStrs[i] += hanArr[hasil[i].charAt(0) - 48] + unitArr[hasil[i].panjang() - 1]; //Pilih satuan angka berdasarkan kode ASCII dan panjang array untuk (int j=1; j<results[i].length(); j++ ) if(hasil[i].charAt(j-1) == '0' && hasil[i].charAt(j) != '0') resultStrs[i] += "nol" + hanArr[hasil[i ].charAt(j) - 48] + unitArr[hasil[i].panjang() - 1 - j]; //Pilih satuan angka berdasarkan kode ASCII dan panjang array else if(results[i].charAt(j) != '0' ) resultStrs[i] += hanArr[results[i].charAt(j) - 48] + unitArr[hasil[i].panjang() - 1 - j] } } untuk (int i=0; i<8; i++ ){ if(resultStrs[i] != null){ hasil += resultStrs[i] + unitArrs[i]; } } hasil += resultStrs[8];RmbTest.java
public class RmbTest{ public static void main(String[] args) { double l; byte[] bye = new byte[50]; Cobalah { Sistem .in.read(bye); }catch(Exception e){} String s = String baru(bye); l = Double.parseDouble(s); s = r.toHanStr(); Sistem.keluar.println(s);Di atas adalah keseluruhan isi artikel ini. Saya harap dapat bermanfaat bagi semua orang yang mempelajari Java.