Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/10/2015, 08:23
lazaromedina
 
Fecha de Ingreso: octubre-2015
Mensajes: 3
Antigüedad: 8 años, 6 meses
Puntos: 0
Como remover "mil cero" del Javascript output?

Hola,

Pude conseguir un codigo que convierte numeros a letras, pero cuando pongo 1000000, me da una respuesta "Un Millon Mil Cero," en ves de solo "Un Millon."

Me pueden ayudar?

<html>
<script>
var o=new Array("Diez", "Once", "Doce", "Trece", "Catorce", "Quince", "Dieciséis", "Diecisiete", "Dieciocho", "Diecinueve", "Veinte", "Veintiuno", "veintidós", "Veintitrés", "Veinticuatro", "Veinticinco", "Veintiséis", "Veintisiete", "Veintiocho", "Veintinueve");
var u=new Array("cero", "uno", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho", "Nueve");
var d=new Array("", "", "", "Treinta", "Cuarenta", "Cincuenta", "Sesenta", "Setenta", "Ochenta", "Noventa");
var c=new Array("", "ciento", "Doscientos", "Trescientos", "Cuatrocientos", "Quinientos", "Seiscientos", "Setecientos", "Ochocientos", "Novecientos");

function toWords(n)
{
var n=parseFloat(n.replace(",","")).toFixed(2); // Limited to 2 decimals
var p=n.toString().substring(n.toString().indexOf(".") +1); // Decimals
var m=n.toString().substring(0,n.toString().indexOf(". ")); // Number without decimals
var m=parseFloat(m).toString().split("").reverse();
var t="";

// Every 3 digits are analayzed
for (var i=0; i<m.length; i+=3)
{
var x=t;
// A 2 digit number is made
var b=m[i+1]!=undefined?parseFloat(m[i+1].toString()+m[i].toString()):parseFloat(m[i].toString());
// We analyze the 3rd digit
t=m[i+2]!=undefined?(c[m[i+2]]+" "):"";
t+=b<10?u[b]:(b<30?o[b-10]:(d[m[i+1]]+(m[i]=='0'?"":(" y "+u[m[i]]))));
t=t=="ciento cero"?"Cien":t;
if (2<i&&i<6)
t=t=="uno"?"Mil ":(t.replace("uno","un")+" mil ");
if (5<i&&i<9)
t=t=="uno"?"un millón ":(t.replace("uno","un")+" millones ");
t+=x;
//t=i<3?t:(i<6?((t=="uno"?"mil ":(t+" mil "))+x):((t=="uno"?"un millón ":(t+" millones "))+x));
}

//t+=" con "+p+"/100";
t=t.replace(" "," ");
t=t.replace(" cero","");
t=t.replace(" mil cero"," ");
return t;
}

</script>
<script type="text/javascript">
function mostrarNumero(elem){
var texto = toWords(elem.value);
document.getElementById('mostrarAca').innerHTML = texto;
}
</script>
<body>
<input type="text" onkeyup="mostrarNumero(this)" />
<p id="mostrarAca"></p>
</body>
</html>