Před nějakým časem jsem dostal zadání na kalkulačku pro chemické výpočty. Před pár dny mně opět přišlo zadání na výpočty, trochu složitějších vzorců. Vzorce byly o mnoho obtížnější k výpočtu než první dávka, ale přišel jsem nakonec na to, proč mi některé zadání nefungovaly, a možná to bude i hodnotná zkušenost do mé sbírky.Šlo o výpočty množství gelu, molární hmotnosti a koncentrace. Pořád dokola jsem nemohl přijít na vysvětlení drobných odchylek, buďto malými chybami ve vzorcích (špatné závorky, proměnné), nebo něco víc. Řešil jsem to poměrně dlouho, ale nakonec jsem na to přišel, a opravil.
K přístupům jsem použil knihovnu jQuery, která se používá pro zjednodušování mnoha JavaScriptových zápisů. Potíž spočívala v použití funkce, která hodnotu zadanou do formuláře převádí na číslo. Dříve jsem se JavaScriptem a výpočty nijak moc nezabýval, a proto jsem byl překvapen, a trochu zaskočen, že má tento jazyk dvě různé funkce pro tu samou ale ne úplně shodnou věc. Protože jsem čísla z formuláře převáděl pomocí parseInt(), místa za desetinnou tečkou (ano, tečkou) byla tímto ignorována, a nepříklad hodnota 6,734 se prostě usekla jako 6,0.
Poté jsem začal trochu pátrat po lepší možnosti, a přišel jsem na to, že pro desetinná místa musím použít funkci téměř úplně ale ne naprosto nepodobnou té předchozí, která je určena pro hodnoty s desetinnou čárkou, funkci parseFloat(). Je až těžko pochopit, že kvůli stejnému zadání vznikly dvě rozdílné věci.
var num=“394.234″;
alert(parseInt(num)); //393
alert(parseFloat(num)); //394.234
//Toto upraví čislo zadané do formuláře tak, že nahradí čárku za tečku (aby počítač rozumněl desetinám) a poté text převede na číslo
var numb=parseFloat($(„#element“).val().replace(/,/, „.“));
Snad tato moje zkušenost v budoucnu přinese něco i jiným tápajícím začátečníkům 🙂