რიცხვები

ჯავასკრიპტში რიცხვები "ორმაგი-სიზუსტის 64-ბიტიანი ფორმატით" არის წარმოდგენილი, ტექნიკურად ამ ენაში არ არსებობს არანაირი integer (მთელი რიცხვი) ტიპი, ამიტომ სიფრთხილე უნდა გამოიჩინოთ მათემატიკური ოპერაციების დროს:

console.log(3/2); // 1.5, not 1
console.log(Math.floor(3/2)); //1

გამოდის რომ, მთელი რიცხვი ჯავასკრიპტში - ათწილადია.

ასევე, ყურადღება მიაქციეთ შემდეგ მაგალIთსაც:

0.1 + 0.2 == 0.30000000000000004;

პრაქტიკულად მთელი რიცხვები განიხილება როგორც 32-bit int ტიპებად და ასევე ძირითადად ასეცაა შენახული, სანამ ისეთი ოპერაციების განხორცილება არაა საჭირო, რომლებიც უშუალოდ რიცხვებზე სრულდება და არა 32-bit integer ტიპის ცვლადებზე.

ჯავასკრიპტის მხარდაჭერა მოიცავს სტანდარტულ არითმეტიკულ ოპერატორებს, მაგალითად: მიმატება, გამოკლება, მოდულუსი და ა.შ. ასევე არსებობს ჩაშენებული Math ობიექტებიც, რომლებიც შედარებით მაღალი დონის ოპერაციებს: ფუნქციებს და კონსტანტებს გვთავაზობს, მაგალითად:

Math.sin(3.5);
var circumference = 2 * Math.PI * r;

თქვენ შეგიძლიათ მათი კონვერტაცია string ან integer ტიპებში parseInt() ფუნქციით, რომელიც ასევე იღებს გარდაქმნის "საფუძველს" მეორე, ნებაყოფლობით არგუმენტს რომლებიც რეკომენდირებულია რომ აუცილებლად მოაყოლოთ:

parseInt('123', 10) // 123
parseInt('010', 10) // 10

ასევე შეიძლება ბინარული/ორობითი რიცხვის მთელ რიცხვში კონვერტაციაც:

parseInt('11', 2); //3

ამის მსგავსად, შეგვიძლია იგივე ოპერაცია განვახორციელოთ ათწილადებზე, ასევე ჩაშენებული parseFloat() ფუნქციით, მაგრამ ამ შემთხევაში ფუძე ყოველთვის 10 იქნება, ამიტომ ფუძის მითითება საჭირო აღარ არის.

+ ოპეარტორსაც შეუძლია სტრინგების რიცხვებში გარდაქმნა:

+ '42' // 42

იმ შემთხვევაში თუ კონვერტაციისთვის მითითებული სტრინგი არ არის რიცხვითი, მაშინ მიიღებთ სპეციალური მნიშვნელობა NaN_ს (Not a Number)

parseInt('hello', 10); //NaN

NaN ტოქსიკურია, იმ შემთხევაში თუ მიუმატებთ, გამოაკლებთ, ან რაიმე სახის მათემატიკურ ოპერაციას ჩაატარებთ სხვა რიცხვთან ერთად, პასუხი მუდმივად NaN იქნება:

NaN + 5; //NaN

NaN_ის შემოწმება შეიძლება ჩაშენებული isNaN() ფუნქციით:

isNaN(NaN); // true

ჯავასკრიპტში ასევე შევხვდებით უსასრულობის აღმნიშვნელსაც - Infinity:

1 / 0; // Infinity
-1 / 0; // -Infinity

ParseInt() და parseFloat() ფუნქციები ამოწმებენ სტრინგს სანამ არ მაიღწევენ ისეთ სიმბოლომდე რომელიც არ არის რიცხვითი მნიშვნელობის და ამ რიცხვამდე დააბრუნებენ ყველა რიცხვით მნიშვნელობას ათწილად ფორმატში მაგრამ + ოპერატორი ასეთ შემთხვევაში მხოლოდ NaN\ს განახებთ._

Last updated