Números árabes para números chineses
Características dos números chineses:
O uso de "zero" em números chineses deve atender às três regras a seguir:
Algumas instruções para o design do algoritmo:
Algoritmo de conversão na seção:
função seção tochinês (seção) {var strins = '', chnstr = ''; var unitpos = 0; var zero = true; while (seção> 0) {var v = seção % 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 ++; seção = math.floor (seção / 10); } retornar chnstr;}A principal função do algoritmo de conversão:
função numbertochinês (num) {var unitpos = 0; var strins = '', chnstr = ''; var neitZero = false; if (num === 0) {return chnnumchar [0]; } while (num> 0) {var seção = num % 10000; if (needzero) {chnstr = chnnumchar [0] + chnstr; } strins = SeçãoTochinês (seção); strins += (seção! == 0)? ChnunitSection [Unitpos]: Chnunitsection [0]; CHNSTR = STRINS + CHNSTR; NeedZero = (Seção <1000) && (Seção> 0); num = math.floor (num / 10000); unitpos ++; } retornar chnstr;}Números chineses para números árabes
Ideia de design:
Converta números chineses em números de árabe com os seguintes objetos:
var chnnumchar = {zero: 0, um: 1, dois: 2, três: 3, quatro: 4, cinco: 5, seis: 6, sete: 7, oito: 8, nove: 9};A posição de peso chinesa convertida em 10 dígitos e a marca de peso é implementada usando os seguintes objetos:
var chnNameValue = { ten:{value:10, secUnit:false}, hundreds:{value:100, secUnit:false}, thousands:{value:1000, secUnit:false}, tens:{value:10000, secUnit:true}, tens:{value:10000, secUnit:true}, tens:{value:100000000, secUnit:true}}O algoritmo de conversão é o seguinte:
função chineseTonumber (chnstr) {var rtn = 0; Var seção = 0; Var número = 0; var secunit = false; var str = chnstr.split (''); for (var i = 0; i <str.Length; i ++) {var num = chnnumchar [str [i]]; if (typeof num! == 'indefinido') {number = num; if (i === str.Length - 1) {Seção += número; }} else {var unit = chnnameValue [str [i]]. Secunit = CHNNAMEVALUE [STR [i]]. Secunit; if (secunit) {seção = (seção + número) * unidade; rtn += seção; seção = 0; } else {seção += (número * unidade); } número = 0; }} retornar rtn + seção;}