When I was but a wee lass, the internet was still a wild, untamed place. Before the advent of walled gardens and minifiers, long before Facebook, you could learn everything you needed to know about web programming using one simple tool: View -> Source.
Wide open fields of HTML, speckled with poignant blossoms of inline CSS! Table after table, each one hand-crafted and oddly indented! Gifs ripe for stealing: dancing flames, dancing babies, and 'under construction' signs! What a wonderful world of secrets lay hidden just two clicks away!
Sometimes, in rare occasions, you can still see whole, unmolested Javascript functions in the source code of pages. Today's function comes from a credit union, ready and waiting to teach a new generation of programmers all about number parsing.
function formatNum(Vnum) {
if (Vnum > 99000000) {
alert("Sorry, this will not generate numbers larger that 99 million.");
focus();
} else {
var V10million = parseInt(Vnum / 10000000);
var V1million = (Vnum % 10000000) / 1000000;
if (V1million / 1000000 == 1) {
V1million = 1;
} else
if (V1million < 1) {
V1million = "0";
} else {
V1million = parseInt(V1million, 10);
}
var V100thousand = (Vnum % 1000000) / 100000;
if (V100thousand / 100000 == 1) {
V100thousand = 1;
} else
if (V100thousand < 1) {
V100thousand = "0";
} else {
V100thousand = parseInt(V100thousand, 10);
}
var V10thousand = (Vnum % 100000) / 10000;
if (V10thousand / 10000 == 1) {
V10thousand = 1;
} else
if (V10thousand < 1) {
V10thousand = "0";
} else {
V10thousand = parseInt(V10thousand, 10);
}
var V1thousand = (Vnum % 10000) / 1000;
if (V1thousand / 1000 == 1) {
V1thousand = 1;
} else
if (V1thousand < 1) {
V1thousand = "0";
} else {
V1thousand = parseInt(V1thousand, 10);
}
var Vhundreds = (Vnum % 1000) / 100;
if (Vhundreds / 100 == 1) {
Vhundreds = 1;
} else
if (Vhundreds < 1) {
Vhundreds = "0";
} else {
Vhundreds = parseInt(Vhundreds, 10);
}
var Vtens = (Vnum % 100) / 10;
if (Vtens / 10 == 1) {
Vtens = 1;
} else
if (Vtens < 1) {
Vtens = "0";
} else {
Vtens = parseInt(Vtens, 10);
}
var Vones = (Vnum % 10) / 1;
if (Vones / 1 == 1) {
Vones = 1;
} else
if (Vones < 1) {
Vones = "0";
} else {
Vones = parseInt(Vones, 10);
}
var Vcents = parseInt(((Vnum % 1) * 100), 10);
if (Vcents < 1) {
Vcents = "00";
}
else
if (Vcents % 10 == 0) {
Vcents = Vcents + "0";
}
else
if (Vcents % 10 == Vcents) {
Vcents = "0" + Vcents;
} else {
Vcents = Vcents;
}
if (Vcents == "900") {
Vcents = "90";
} else
if (Vcents == "800") {
Vcents = "80";
} else
if (Vcents == "700") {
Vcents = "70";
} else
if (Vcents == "600") {
Vcents = "60";
} else
if (Vcents == "500") {
Vcents = "50";
} else
if (Vcents == "400") {
Vcents = "40";
} else
if (Vcents == "300") {
Vcents = "30";
} else
if (Vcents == "200") {
Vcents = "20";
} else
if (Vcents == "100") {
Vcents = "10";
} else {
Vcents = Vcents;
}
var Vformat = "";
if (Vnum >= 10000000) {
Vformat = (V10million + "" + V1million + "," + V100thousand + "" + V10thousand + "" + V1thousand + "," + Vhundreds + "" + Vtens + "" + Vones + "." + Vcents);
}
else
if (Vnum >= 1000000) {
Vformat = (V1million + "," + V100thousand + "" + V10thousand + "" + V1thousand + "," + Vhundreds + "" + Vtens + "" + Vones + "." + Vcents);
}
else
if (Vnum >= 100000) {
Vformat = (V100thousand + "" + V10thousand + "" + V1thousand + "," + Vhundreds + "" + Vtens + "" + Vones + "." + Vcents);
}
else
if (Vnum >= 10000) {
Vformat = (V10thousand + "" + V1thousand + "," + Vhundreds + "" + Vtens + "" + Vones + "." + Vcents);
}
else
if (Vnum >= 1000) {
Vformat = (V1thousand + "," + Vhundreds + "" + Vtens + "" + Vones + "." + Vcents);
}
else
if (Vnum >= 100) {
Vformat = (Vhundreds + "" + Vtens + "" + Vones + "." + Vcents);
}
else
if (Vnum >= 10) {
Vformat = (Vtens + "" + Vones + "." + Vcents);
}
else
if (Vnum >= 1) {
Vformat = (Vones + "." + Vcents);
} else {
Vformat = ("0." + Vcents);
}
return Vformat;
}
}
Inputting "8343.33" to this function results in the output of "8,343.32". Why? It's a feature. Ship it!