Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

Czym jest Literał Liczbowy?

W programowaniu, literał liczbowy to po prostu sposób przedstawienia liczby w kodzie. Przykładem są liczby takie jak 42 czy 3.14, które wpisujesz bezpośrednio w swój kod JavaScript. Co ciekawe, w JavaScript nie rozróżniamy typów liczb całkowitych od liczb zmiennoprzecinkowych – obie te formy to po prostu liczby.

Różne Formaty Zapisu Liczb w JavaScript

W JavaScript możemy spotkać się z kilkoma sposobami zapisywania liczb, każdy z nich ma swoje zastosowanie:

Format dziesiętny(Decimal)

Jest to standardowy sposób zapisu liczb, wykorzystujący cyfry od 0 do 9. np :10, 23, 1000

Format szesnastkowy(Hexadecimal)

Wykorzystuje cyfry od 0 do 9 oraz litery od A do F (lub a do f), reprezentujące liczby 10–15. Najczęstszym wykorzystaniem tego formatu w programowaniu JavaScript to zapis kolorów:

let colorRed = 0xFF0000;

Format wykładniczy(Exponential)

Pozwala na zapisanie dużych i małych liczb w sposób bardziej zwięzły. Używa litery e lub E, na przykład 4.2e3, co oznacza 4.2 * 10^3 czyli 4200

Zapis z separatorem

JavaScript umożliwia zapis liczb z separatorem tysięcznym dla lepszej czytelności.

let numberWithSeparator = 1_000_000;
console.log(numberWithSeparator); 
// Wyświetli: 1000000

W tym przypadku, _ działa jako separator, pomagając łatwo odczytać, że liczba to milion. Jest to szczególnie przydatne, gdy pracujesz z dużymi liczbami i chcesz zachować klarowność swojego kodu.

Z pomięciem 0

W liczbach zmiennoprzecinkowym 0 w części dziesiętnej jest opcjonalne, tak jak i w części ułamkowej

let floatingPointNumber = .123;
console.log(floatingPointNumber);
// Wyświetli: 0.123

Liczby specjalne

W JavaScript istnieją pewne specjalne wartości liczbowe, które warto znać:

Nieskończoność (Infinity)

Jeżeli wynik działania arytmetycznego wychodzi po za dopuszczalną wartość, zwraca jest wartość Infinity czyli nieskończoność. Zakres dopuszczalnych wartości można sprawdzić korzystając z globalnych zmiennych

Number.MAX_VALUE
//1.7976931348623157e+308

Number.MAX_SAFE_INTEGER
//9007199254740991

Number.MIN_VALUE
//5e-324

Number.MIN_SAFE_INTEGER
//-9007199254740991

NaN (Not a Number)

Jest to specjalna wartość reprezentująca „nieliczbę”. Możesz ją spotkać, gdy operacja arytmetyczna nie daje sensownego wyniku, jak w przypadku dzielenia 0/0 czy próby wykonania operacji arytmetycznej na stringu, np. "string"/2.

0/0
//Wynik NaN

"string"/2
//Wynik NaN

Mimo nazwy, typeof NaN zwraca 'number', więc lepiej myśleć o NaN jako o błędzie arytmetycznym lub niepoprawnej wartości liczbowej.

typeof("string"/2);
//Wynik: 'number'

BigInt

Dzięki BigInt(dodany w wersji EcmaScript 2020) możesz pracować z liczbami, które są zbyt duże, by być poprawnie przedstawione za pomocą standardowego typu Number. Aby utworzyć liczbę typu BigInt, wystarczy dodać literę n na końcu liczby. Oto przykład:

const myBigInt = 123n;

Błędy w zaokrągleniach

Błędy związane z zaokrąglaniem liczb są powszechnie obecne w programowaniu(nie tylko w JavaScript), zwłaszcza przy operacjach na liczbach zmiennoprzecinkowych. Najpopularniejsze przypadki:


let result = 0.1 + 0.2; // 0.30000000000000004
console.log(result === 0.3);
//Wynik: false

let largeNumber = 9999999999999999.99;
let result = largeNumber + 1;
console.log(result);
//Wynik: 10000000000000000

let problematicResult = 0.3 - 0.2; // 0.09999999999999998
console.log(problematicResult === 0.1);
//Wynik: false

Dlaczego tak się dzieje?

Komputery operują na systemie binarnym (bazującym na dwóch stanach, 0 i 1), w przeciwieństwie do codziennego systemu dziesiętnego, którego używamy na co dzień (bazującego na cyfrach od 0 do 9). Ta różnica powoduje, że niektóre liczby dziesiętne nie mają dokładnego odpowiednika w binarnym świecie komputera.

Przykładowo, w systemie dziesiętnym liczba 0.2 to po prostu 0.2. Ale w systemie binarnym, ta sama liczba staje się nieskończonym ciągiem cyfr: 0.00110011001100110011.... Podobnie dzieje się z 0.1, które w binarnym staje się 0.00011001100110011....

Komputer nie ma możliwości przechowywania nieskończenie długich ciągów binarnych. Dlatego musi dokonać zaokrąglenia tych wartości do najbliższej możliwej do przechowania liczby, co prowadzi do niewielkich błędów reprezentacji.

Kiedy te zaokrąglone wartości są używane w obliczeniach i następnie konwertowane z powrotem na format dziesiętny, wynik może nieco różnić się od oczekiwanego. To jest przyczyną, dla której operacje takie jak dodawanie 0.1 i 0.2 w programowaniu nie dają dokładnie 0.3, lecz nieco inną wartość.

W praktyce te drobne różnice mogą się kumulować, szczególnie w skomplikowanych obliczeniach lub w operacjach, które wykonujemy wielokrotnie. W rezultacie, w zastosowaniach wymagających dużej precyzji, takich jak finanse, te błędy mogą mieć znaczący wpływ.

Jak unikać tych błędów?

W przypadku obliczeń finansowych, zaleca się przechowywanie i operowanie na liczbach całkowitych zamiast zmiennoprzecinkowych. Na przykład, zamiast przechowywać kwoty jako złotówki i grosze (np. 1,55 zł), przechowuje się je jako najmniejszą jednostkę (np. 155 groszy). Dzięki temu unikniesz błędów zaokrągleń, które często pojawiają się przy liczbach zmiennoprzecinkowych.

Używanie Metod toPrecision() i toFixed()

toPrecision()

Ta metoda określa, ile cyfr liczby należy zachować. Na przykład:

var num = 12345.6789;
//W tym przypadku toPrecision(6) zaokrągla liczbę do 6 cyfr.
var formattedNum = num.toPrecision(6);
console.log(formattedNum); // Wynik: "12345.7"
toFixed()

Ta metoda określa, ile miejsc po przecinku należy zachować. Na przykład:

var num = 12345.6789;
//Tutaj toFixed(2) zaokrągla liczbę do dwóch miejsc po przecinku.
var formattedNum = num.toFixed(2);
console.log(formattedNum); // Wynik: "12345.68"

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *