Links

რიცხვები

ჯავასკრიპტში რიცხვები "ორმაგი-სიზუსტის 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\ს განახებთ._