Angka Arab untuk angka Cina
Karakteristik angka Cina:
Penggunaan "nol" dalam nomor Cina harus memenuhi tiga aturan berikut:
Beberapa instruksi untuk desain algoritma:
Algoritma konversi di bagian:
function sectionTochinese (bagian) {var strins = '', chnstr = ''; var unitpos = 0; var nol = true; while (bagian> 0) {var v = Bagian % 10; if (v === 0) {if (! Zero) {zero = true; chnstr = chnnumchar [v] + chnstr; }} else {zero = false; strin = chnnumchar [v]; strin += chnunitchar [unitpos]; chnstr = strin + chnstr; } unitpos ++; bagian = Math.floor (bagian / 10); } return chnstr;}Fungsi utama dari algoritma konversi:
fungsi numbertochinese (num) {var unitpos = 0; var strins = '', chnstr = ''; var needzero = false; if (num === 0) {return chnnumchar [0]; } while (num> 0) {var bagian = num % 10000; if (needzero) {chnstr = chnnumchar [0] + chnstr; } strins = sectiontochinese (bagian); strin += (bagian! == 0)? chnunitsection [unitpos]: chnunitsection [0]; chnstr = strin + chnstr; NeedZero = (bagian <1000) && (bagian> 0); num = math.floor (num / 10000); unitpos ++; } return chnstr;}Jumlah Cina untuk Nomor Arab
Ide Desain:
Konversi nomor Cina menjadi nomor Arab dengan benda -benda berikut:
var chnnumchar = {nol: 0, satu: 1, dua: 2, tiga: 3, empat: 4, lima: 5, enam: 6, tujuh: 7, delapan: 8, sembilan: 9};Posisi berat Cina dikonversi menjadi 10 digit dan tanda berat diimplementasikan menggunakan objek berikut:
var chnnamevalue = {sepuluh: {value: 10, secunit: false}, ratusan: {value: 100, secunit: false}, ribuan: {value: 1000, secunit: false}, tens: {value: 10000, secunit: true}, tens: {value: 10000, secunit: {10000, secunit: true}, tens: {value: 10000, secunit: sect: 10000 {10000 {{10000, 10000 {10000 {10000,Algoritma konversi adalah sebagai berikut:
fungsi chinesetonumber (chnstr) {var rtn = 0; bagian var = 0; var number = 0; var secunit = false; var str = chnstr.split (''); untuk (var i = 0; i <str.length; i ++) {var num = chnnumchar [str [i]]; if (typeof num! == 'tidak terdefinisi') {number = num; if (i === str.length - 1) {section += angka; }} else {var unit = chnnamevalue [str [i]]. value; secunit = chnnamevalue [str [i]]. secunit; if (secunit) {section = (bagian + angka) * unit; rtn += bagian; bagian = 0; } else {bagian += (angka * unit); } angka = 0; }} return rtn + bagian;}