Čísla jsou:

  • Celá čísla - 0, 69 nebo 9_007_199_254_740_991
  • Desetinná čísla - 0.1, 0.2 - oddělujeme je desetinnou tečkou
  • Not a Number - NaN - pozor na něj!
  • Infinity - vznikne dělením nulou

Při zápisu můžeš použít tríček s podtržítkem _. Nedělá to vůbec nic, jenom tím zlepšíš čitelnost - hezky oddělíš řády.

100000 === 100_000 // true
9_007_199_254_740_991 === 9007199254740991 // true

Operace s čísly

Sčítání, odčítání, násobení, dělení

const number1 = 33;
const number2 = 77;

console.log(number1 + number2); // Sčítání
// Výstup: 110
console.log(number1 - number2); // Odčítání
// Výstup: -44
console.log(number1 * number2); // Násobení
// Výstup: 2541
console.log(number1 / number2); // Dělení
// Výstup: 0.42857142857142855

Pozor na dělení nulou!

console.log(100 / 0);
// Výstup: Infinity

Zbytek po dělení - modulo %

const durationSeconds = 125;
// Minuta má 60 sekund
console.log(durationSeconds % 60);
// Výstup: 5

Umocnění - **

console.log(2 ** 2); // Dva na druhou
// Výstup: 4
console.log(2 ** 3); // Dva na třetí
// Výstup: 8
console.log(2 ** 4); // Dva na čtvrtou
// Výstup: 16
console.log(2 ** 5); // Dva na pátou
// Výstup: 32
console.log(2 ** 6); // Dva na šestou
// Výstup: 64

Nutné vědět

Dej si pozor na hodnotu NaN (not a number). Jednou nebo později na to narazíš, tak se připrav.

const parsedNumber = parseInt("asdf");

console.log(parsedNumber); 
// Výstup: NaN
console.log(typeof parsedNumber);
// Výstup: number

console.log(parsedNumber === NaN) 
// Výstup: false
console.log(Number.isNaN(parsedNumber)) 
// Výstup: true

Do proměnné typu number nelze uložit číslo větší než 9_007_199_254_740_991 (devět biliard). Sice ho tam narveš, ale ztrácíš přesnost a nemůžeš se na výsledek spolehnout.

Pokud chceš pracovat s většími čísly, použij BigInt.

Pozor na přesnost desetinných čísel ( floating point arithmetic)!

Vlož do konzole tento kód:

const fractionSum = 0.2+0.1;
console.log(fractionSum);
console.log(fractionSum === 0.3); // Je to true, nebo false?

Co se to děje?! Bohužel to není bug 🐞, ale feature. Začínáme zabrušovat do teoretické informatiky.

Na vysvětlení problému je perfektní video od Computerphile.

Nemusíš to umět kompletně vysvětlit z paměti, ale musíš o tomto problému vědět!

Pro nás je klíčové:

  1. Desetinná čísla NEJSOU přesná.
  2. Pokud chceme “přesně” počítat s desetinnými čísly, potřebujeme Number.EPSILON
  • To neplatí vždy, například peníze (halíře) v bance takhle počítat nemůžeme.
  • Pokud nám jde o to, kolik mají kámoši poslat za objednanou pizzu, tak je to fuk.
  1. Pokud přesnost nepotřebujeme, postačí nám

Úloha 1 - Spotřeba benzínu 🚗

Vyrazíš s chábrama a chrábryněma na festival Rock For People tvým žihadlem Ford Fiesta z roku 2005.

Dohromady do Hradce a zpátky ujedeš 225 km a spotřebuješ 15 litrů benzínu. Benzín Tě vyšel na 36.90 Kč za litr.

  1. Cenu benzínu dělíte mezi 4 lidi, kolik peněz Ti každý z nich pošle?
  2. Jaká byla průměrná spotřeba benzínu na 100 km?

Úloha 2 - FE!N 🔥

Ve Spotify wrapped 2024 máš nejposlouchanější skladbu FE!N od Travise Scotta, hrála Ti dohromady 112krát.

  1. Kolikrát se z Tvých sluchátek ozvalo “FE!N”?
  2. Kolik sekund, minut a hodin si strávil*a poslechem?
    • formát: Celkový čas poslechu je 5 hodin, 56 minut a 32 sekund

Detaily:

  • Skladba trvá 3 minuty a 11 sekund
  • FE!N se v jednom přehrání skladby objeví 69krát
  • Vždy posloucháš až do konce.

Úloha 3 - Paušální výdaje OSVČ 💰

Začínáš programovat na vlastní živnost (OSVČ) a přišel čas vyplnění daňového přiznání.

Za rok 2024 se ti povedlo vydělat 1 milion Kč, gratuluju! Potřebuješ vypočítat, kolik zaplatíš státu na dani z příjmu.

Účetní ti doporučila využití paušálních výdajů ve výši 60 %.

Tvoje situace vypadá takto:

Příjem1 000 000 Kč
Paušál výdajů60 %Dáno zákonem
Výdaje600 000 Kčpříjem * Paušál výdajů
Základ daně400 000 KčPříjem - Výdaje
Sazba daně15 %Dáno zákonem
Daň60 000 KčZáklad daně * Sazba daně
Kolik by si na dani zaplatil*a, kdyby tvůj příjem byl:
  • 100 000 Kč
  • 895 432 Kč
  • 108 920 Kč

Neuvažuj slevy na dani.