Can somebody help me converting this code to VB.NET?
I tried it alone, and this is my result so far:
I dont understand a few things, so I need some help translating it.
VB.NET:
function getTillion(i)
{
var WW=new Array("M","B","Tr","Quadr","Quint","Sext","Sept","Okt","Non","Dez","Undez","Duodez","Tredez","Quadradez","Quintadez","Sextadez");
var WWW=new Array("","Un","Duo","Tre","Quattuor","Quin","Sex","Septen","Okto","Novem");
var WWWW=new Array("","Dez","Vigint","Trigint","Quadragint","Quinquagint","Sexagint","Septuagint","Oktogint","Nonagint");
var WWWWW=new Array("","Cent","Ducent","Trecent","Quadringent","Quingent","Sescent","Septingent","Octingent","Nongent");
var WWWWWW=new Array("","Millia","Domillia","Tremillia","Quattuormillia","Quinmillia","Sexmillia","Septenmillia","Oktomillia");
if(i==0)return "";
if(i<10)return WW[i-1];
var e=i%10,z=Math.floor(i/10)%10,h=Math.floor(i/100)%10,t=Math.floor(i/1000)%10,
zt=Math.floor(i/10000)%10,ht=Math.floor(i/100000)%10;
var a=WWW[e]+WWWW[z];if(i<100)return a.charAt(0).toUpperCase()+a.substr(1,a.length).toLowerCase();
a=WWWWW[h]+a;
if(i<4000)a=WWWWWW[t]+a;
else a=WWWWW[ht]+WWW[t]+WWWW[zt]+"millia"+a;
var aa=a.charAt(a.length-1);
if((aa!="t")&&(aa!="z"))a+="t";
return a.charAt(0).toUpperCase()+a.substr(1,a.length).toLowerCase();
}
function getZahlwort(x,tr)
{
x=String(x);
if(x=="pi")return getZahlwort("3,1415")+" ...";
if(x=="e")return getZahlwort("2,7182")+" ...";
if((x=="phi")||(x.indexOf("goldener Schnitt")==0))return getZahlwort("0,6180")+" ...";
if(x=="Phi")return getZahlwort("phi").replace(/null K/,"eins K");
if(x.indexOf("/")>-1)return getBruchZahlwort(x);
if(x=="0")return "null";
x=x.replace(/ /g,"").replace(/\./g,",");
xx=x.split(",");
if(x.replace(/\D/g,"")=="")return "";
var t="",v=(x.charAt(0)=="-")?"Minus ":"",i=0;
x=x.replace(/-/,"").replace(/ /g,"");
x=xx[0].replace(/\D/g,"");
if(x.length>999999*6)return "diese Zahl ist unheimlich groß, die ist mir zu unheimlich";
var ZZ=new Array("null","eins","zwei","drei","vier","fünf","sechs","sieben","acht","neun");
var ZZZ=new Array("zehn","elf","zwölf");
var ZZig=new Array("","zehn","zwanzig","dreißig","vierzig","fünfzig","sechzig","siebzig","achtzig","neunzig");
if((tr==null)||(tr==false)||(x<1000000))tr=(1==0);else tr=(1==1);
var trz=(tr)?" ":"";
if(x=="0,0")return"Nullkommanix";
while(x!="")
{
while(x.length<3)x="0"+x;
var y=x.substr(x.length-3,3);x=x.substr(0,x.length-3);
while(y.length<3)y="0"+y;//alert(y);
var y1=parseInt(y.charAt(0)),y2=parseInt(y.charAt(1)),y3=parseInt(y.charAt(2));
var tt=ZZ[y1]+"hundert";
if(y2==1){if(y3<3)tt+=ZZZ[y3];else tt+=ZZ[y3].replace(/hs/,"h").replace(/en/,"")+"zehn";}
else tt+=ZZ[y3]+((y2>1)?"und"+ZZig[y2]:"");
tt=tt.replace(/nullhundert/,"").replace(/eins/g,"ein").replace(/nullund/g,"").replace(/null/g,"");
if((tt=="ein")&&(i==0))tt+="s";
if(i==0)t="_"+tt+t;
if((i==1)&&(tt!=""))t="_"+tt+"tausend"+t;
if((i>1)&&(tt=="ein")){t="_eine"+trz+getTillion(Math.floor(i/2))+(((i%2)==1)?"illiarde":"illion")+trz+t;}
else if((i>1)&&(tt!=""))t="_"+tt+trz+getTillion(Math.floor(i/2))+(((i%2)==1)?"illiarden":"illionen")+trz+t;
i++;
}
var T=t.split(" ");
//T[0]=T[0].replace(/_/,"");
for(i=0;i<T.length;i++)T[i]=T[i].charAt(0).toUpperCase()+T[i].substring(1,T[i].length).toLowerCase();
t=T.join(trz).replace(/_/g,"");
if(!tr)t=t.toLowerCase();
if(xx.length>1)
{
if(t=="")t="null";
x=xx[1].replace(/\D/g,"");
t+=" Komma";
for(i=0;i<x.length;i++)t+=" "+ZZ[parseInt(x.charAt(i))];
}
return v+t;
}
function getZehnerpotenz(n)
{
n=parseInt(String(n));
if(isNaN(n))return "";if(n==0)return"eins";if(n==1)return"zehn";if(n==2)return"hundert";
if(n==3)return"tausend";if(n==4)return"zehntausend";if(n==5)return"hunderttausend";
if(n==-1)return"ein Zehntel";if(n==-2)return"ein Hundertstel";
if(n==-3)return"ein Tausendstel";if(n==-4)return"ein Zehntausendstel";
if(n==-5)return"ein Hunderttausendstel";
if(n==100)return"zehn Sexdezilliarden - oder 'ein Googol'";
var v=(n<0);n=Math.abs(n);var m=n%6,p=m%3,q=m>2,n=(n-m)/6;
var t=(new Array("eine","zehn","hundert"))[p]+" "+getTillion(n)+"illi"+(q?"arde":"on");
if(!v)return (t+((p>0)?"en":"")).replace(/ee/,"e");
t=t.replace(/eine/,"").replace(/ /,"").toLowerCase();
return "ein "+(t.charAt(0).toUpperCase()+t.substr(1,t.length-1)+"stel").replace(/estel/,"stel");
}
function getBruchZahlwort(x)
{
var xx=x.split("/");if(xx.length==1)return getZahlwort(x);
if((xx[1]=="")||(String(x).replace(/\./,",").indexOf(",")>-1))return "";
var Z=getZahlwort(xx[0],true),N=getZahlwort(xx[1])+"tel";
if(N=="nulltel")return Z+" geteilt durch Null (nicht definiert!)";
if(Z=="eins")Z="ein";
N=N.replace(/ttel/,"tel").replace(/igtel/,"igstel").replace(/eine/,"");
N=N.replace(/dreitel/,"drittel").replace(/bentel/,"btel");
N=N.charAt(0).toUpperCase()+N.substr(1,N.length-1);
N=N.replace(/ionentel/,"ionstel").replace(/iardentel/,"iardstel");
N=N.replace(/iontel/,"ionstel").replace(/iardetel/,"iardstel");
if(N=="Zweitel")N=(Z=="ein")?"Halb":"Halbe";
if(N=="Einstel")N=(Z=="ein")?"Ganzes":"Ganze";
return Z+" "+N;
}
I tried it alone, and this is my result so far:
VB.NET:
Private Function getTillion(ByVal i As Double)
Dim WW() As String = {"M", "B", "Tr", "Quadr", "Quint", "Sext", "Sept", "Okt", "Non", "Dez", "Undez", "Duodez", "Tredez", "Quadradez", "Quintadez", "Sextadez"}
Dim WWW() As String = {"", "Un", "Duo", "Tre", "Quattuor", "Quin", "Sex", "Septen", "Okto", "Novem"}
Dim WWWW() As String = {"", "Dez", "Vigint", "Trigint", "Quadragint", "Quinquagint", "Sexagint", "Septuagint", "Oktogint", "Nonagint"}
Dim WWWWW() As String = {"", "Cent", "Ducent", "Trecent", "Quadringent", "Quingent", "Sescent", "Septingent", "Octingent", "Nongent"}
Dim WWWWWW() As String = {"", "Millia", "Domillia", "Tremillia", "Quattuormillia", "Quinmillia", "Sexmillia", "Septenmillia", "Oktomillia"}
If i = 0 Then
Return "" : Exit Function
ElseIf i < 10 Then
Return WW(i - 1) : Exit Function
End If
Dim e As String = i Mod 10
Dim z As String = Math.Floor(i / 10) Mod 10
Dim h As String = Math.Floor(i / 100) Mod 10
Dim t As String = Math.Floor(1 / 1000) Mod 10
Dim zt As String = Math.Floor(i / 10000) Mod 10
Dim ht As String = Math.Floor(i / 100000) Mod 10
Dim a As String = WWW(e) & WWWW(z)
If i < 100 Then Return a : Exit Function
a = WWWWW(h) & a
If i < 4000 Then
a = WWWWWW(t) & a
Else
a = WWWWW(ht) & WWW(t) & WWWW(zt) & "millia" & a
End If
Dim aa As String = a.Chars(a.Length - 1)
If aa <> t And aa <> z Then a = a & "t"
Return a.ToUpperInvariant(0) & a.Substring(1, a.Length).ToLower
End Function
Private Function getZahlwort(ByVal x As String, ByVal tr As String)
If x.Contains("/") = True Then Return getBruchZahlwort(x) : Exit Function
If x = 0 Then Return "null" : Exit Function
End Function
I dont understand a few things, so I need some help translating it.