Numéros arabes aux chiffres chinois
Caractéristiques des chiffres chinois:
L'utilisation de "zéro" en nombre chinois doit respecter les trois règles suivantes:
Quelques instructions pour la conception de l'algorithme:
Algorithme de conversion en section:
Fonction sectiontochinese (section) {var strins = '', chnstr = ''; var unitpos = 0; var zero = true; while (section> 0) {var v = section% 10; if (v === 0) {if (! zero) {zero = true; chnstr = chnnumchar [v] + chnstr; }} else {zero = false; strins = chnnumchar [v]; strins + = chnunitchar [unitpos]; chnstr = strins + chnstr; } UnitPos ++; section = math.floor (section / 10); } return chnstr;}La fonction principale de l'algorithme de conversion:
Fonction NumberToChinese (num) {var UnitPos = 0; var strins = '', chnstr = ''; var NeedZero = false; if (num === 0) {return chnnumchar [0]; } while (num> 0) {var section = num% 10000; if (Needzero) {chnstr = chnnumchar [0] + chnstr; } strins = sectiontochinese (section); Strins + = (Section! == 0)? chnunitSection [unitpos]: chnunitSection [0]; chnstr = strins + chnstr; NeedZero = (section <1000) && (section> 0); num = math.floor (num / 10000); UNITPOS ++; } return chnstr;}Nombres chinois aux nombres arabes
Idée de conception:
Convertir les numéros chinois en numéros arabes avec les objets suivants:
var chnnumchar = {zéro: 0, un: 1, deux: 2, trois: 3, quatre: 4, cinq: 5, six: 6, sept: 7, huit: 8, neuf: 9};La position de poids chinoise convertie en 10 chiffres et la marque de poids est mise en œuvre à l'aide des objets suivants:
var chnnameValue = {dix: {valeur: 10, secunit: false}, centaines: {valeur: 100, secrenit: false}, milliers: {value: 1000, secrenit: false}, Tens: {value: 10000, secunit: true}, TENS: {value: 10000, secunit: true}, tins:} Sénunit: true}}L'algorithme de conversion est le suivant:
fonction chinesetonumb (chnstr) {var rtn = 0; Var Section = 0; Var Number = 0; var secunit = false; var str = chnstr.split (''); pour (var i = 0; i <str.length; i ++) {var num = chnnumchar [str [i]]; if (typeof num! == 'Undefined') {nombre = num; if (i === str.length - 1) {section + = nombre; }} else {var Unit = chnNameValue [str [i]]. valeur; Secunit = chnNameValue [str [i]]. Secunit; if (Secunit) {section = (section + numéro) * unité; RTN + = section; section = 0; } else {section + = (nombre * unité); } numéro = 0; }} return rtn + section;}