Basket of money

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!

[Advertisement] Incrementally adopt DevOps best practices with BuildMaster, ProGet and Otter, creating a robust, secure, scalable, and reliable DevOps toolchain.