/ janturon.cz / Výuka / Javascript / Číslo a text

Číslo a text

V minulém díle jsme pracovali pouze s textem. Do proměnných můžeme ukládat i čísla a javascript má někdy problém pochopit, co jsme chtěli vyjádřit:

var a = prompt("Type number a"); var b = prompt("Type number b"); var ab = a + b; alert("a + b = " + ab);

Uvedený program nepočítá tak dobře, jak bychom si od počítače slibovali. Operátor + se totiž používá jak na sčítání, tak na spojování textu. A funkce prompt vrací text.

Převod textu na číslo

Javascript je slabě typovaný jazyk, to znamená, že si typ proměnné převádí, když "uzná za vhodné". Jedním ze způsobů, jak ho k tomu donutit, je vynásobit nebo vydělit text jedničkou: tyto operace jsou definovány pouze na číslech. Tomuto způsobu se říká implicitní konverze:

var a = 1 * prompt("Type number a"); var b = 1 * prompt("Type number b"); var ab = a + b; alert("a + b = " + ab);

Druhý způsob je použít explicitní konverzi: nativní funkci parseInt (převod na celé číslo) nebo parseFloat (převod na desetinné číslo). Implicitně můžeme zkonvertovat na desetinné číslo vynásobením 1.0 - javascript používá pouze desetinnou tečku, ne čárku.

var a = prompt("Type number a"); var b = prompt("Type number b"); var ab = parseInt(a) + parseInt(b); alert("a + b = " + ab);

Implicitní i explicitní konverze si kupodivu poradí, i když zadáte 5 hrušek a 7 jablek - výsledek je 12. Převod probíhá od začátku textu "dokud to jde". Pokud to nejde už od začátku (třeba pro text hodně, je výsledkem konverze konstanta NaN (Not a Number).

Převod čísla na text

Implicitně je možný spojením s prázdným textem +"". Explicitně je k tomu třeba vysvětlit pár dalších pojmů, dojde na to v sedmé lekci (doufám).

Podivné konstanty

Shrňme si podivné konstanty, se kterými se můžeme setkat:

Tyto konstanty můžeme proměnným také přiřadit.

Opravit NaN dokáží podmínky - vysvětlíme si příští hodinu.

Datové typy

Od této chvíle dále budu po programátorsku označovat text jako řetězec (string), celé číslo jako int (integer) a desetinné číslo jako float.

 

Otázky a úkoly