জাভাস্ক্রিপ্ট নাম্বার (JavaScript Numbers)
নয়ন চন্দ্র দত্ত
জাভাস্ক্রিপ্ট এর শুধুমাত্র এক ধরনের নাম্বার আছে। নাম্বার দশমিক দিয়ে বা না দিয়েও লেখা যায়।
জাভাস্ক্রিপ্ট নাম্বার
নাম্বার দশমিক দিয়ে বা না দিয়েও লেখা যায়ঃ
উদাহরণ
var x = 34.00; // A number with decimals
var y = 34; // A number without decimals
অতিরিক্ত বড় বা অতিরিক্ত ছোট সংখ্যা বৈজ্ঞানিক (সূচক) স্বরলিপি দিয়ে লেখা যেতে পারে।
উদাহরণ
var x = 123e5; // 12300000 var y = 123e-5; // 0.00123
জাভাস্ক্রিপ্ট নাম্বার সর্বদা 64 বিট ফ্লোটিং পয়েন্ট হয়
অন্যান্য অনেক প্রোগ্রামিং ভাষা থেকে ভিন্ন, জাভাস্ক্রিপ্ট বিভিন্ন ধরনের নাম্বার সংজ্ঞায়িত করেনা; যেমন- ইন্টিজার, ছোট, লম্বা, ফ্লোটিং-পয়েন্ট ইত্যাদি।
জাভাস্ক্রিপ্ট নাম্বার সবসময় আন্তর্জাতিক আইইইই 754 মান অনুসরণ করে, ডবল স্পষ্টতার ফ্লোটিং পয়েন্ট নাম্বার হিসেবে সংরক্ষণ করা হয়।
এই ফরম্যাট 64 বিট নাম্বার বিন্যাস করে যেখানে নাম্বার (ভগ্নাংশ) 0 থেকে 51 বি্টের মধ্যে সংরক্ষিত হয়। বিটের সূচক 52 থেকে 62 এবং বিটের সাইন ইন 63 হয়।
মান (ওরফে ভগ্নাংশ / অংশক) | 52 bits (0 – 51) |
সূচক | 11 bits (52 – 62) |
সাইন | 1 bit (63) |
যথার্থতা
ইন্টিজার (নির্দিষ্ট সময়ের বা সূচক স্বরলিপি ছাড়া নাম্বার) 15 সংখ্যার পর্যন্ত সঠিক বলে মনে করা হয়।
উদাহরণ
var x = 999999999999999; // x will be 999999999999999 var y = 9999999999999999; // y will be 10000000000000000
দশমিক সর্বোচ্চ সংখ্যা 17 কিন্তু পাটীগণিতীয় ফ্লোটিং পয়েন্ট সবসময় 100% সঠিক হয়না।
উদাহরণ
var x = 0.2 + 0.1; // x will be 0.30000000000000004
উপরে সমস্যা সমাধান করার জন্য, এটি সংখ্যাবৃদ্ধি এবং ডিভাইড করতে সাহায্য করেঃ
উদাহরণ
var x = (0.2 * 10 + 0.1 * 10) / 10; // x will be 0.3
হেক্সাডেসিমেল
যদি তারা 0x দ্বারা পূর্বে হয় তাহলে জাভাস্ক্রিপ্ট হেক্সাডেসিমাল হিসাবে সাংখ্যিক ধ্রুবক ব্যাখ্যা করে।
উদাহরণ
var x = 0xFF; // x will be 255
[ লিডিং শূন্য (যেমন 07) দিয়ে সংখ্যা লিখবেন না। ]
ডিফল্টরূপে, জাভাস্ক্রিপ্ট বেস 10 দশমিক সংখ্যা হিসাবে প্রদর্শন করে। কিন্তু বেস 16 (হেক্স), বেস 8 (অকট্যাল), বা বেস 2 (বাইনারি) হিসাবে আউটপুট toString() ব্যবহার করতে পারেন।
উদাহরণ
var myNumber = 128; myNumber.toString(16); // returns 80 myNumber.toString(8); // returns 200 myNumber.toString(2); // returns 10000000
অসীম
উদাহরণ
var myNumber = 2; while (myNumber != Infinity) { // Execute until Infinity myNumber = myNumber * myNumber; }
0 (শূন্য) দ্বারা ভাগ করেও অসীম তৈরি করা যায়।
উদাহরণ
var x = 2 / 0; // x will be Infinity var y = -2 / 0; // y will be -Infinity
অসীম একটি সংখ্যা। অসীম typeOf নাম্বার প্রদান করে।
উদাহরণ
typeof Infinity; // returns "number"
NaN – কোন সংখ্যা নয়
NaN একটি জাভাস্ক্রিপ্ট সংরক্ষিত শব্দ একটি মান যা নির্দেশ করে যা কোন সংখ্যা নয়। একটি অ-সাংখ্যিক স্ট্রিং সঙ্গে গাণিতিক কাজ করার চেষ্টা করেলে রেজাল্ট NaN(কোন সংখ্যা নয়) হবে।
উদাহরণ
var x = 100 / "Apple"; // x will be NaN (Not a Number)
যাইহোক, স্ট্রিং এর একটি সাংখ্যিক মান রয়েছে। রেজান্ট একটি সংখ্যা হবেঃ
উদাহরণ
var x = 100 / "10"; // x will be 10
মান একটি সংখ্যা হয় তাহলে আপনি গ্লোবাল জাভাস্ক্রিপ্ট ফাংশন isNaN() ব্যবহার করে তা খুঁজে বের করতে পারেন।
উদাহরণ
var x = 100 / "Apple"; isNaN(x); // returns true because x is Not a Number
NaN দেখুন। আপনি যদি গাণিতিক অপারেশন এর মধ্যে NaN ব্যবহার করেন তাহলে রেজাল্ট নিম্নরূপ হবেঃ
উদাহরণ
var x = NaN; var y = 5; var z = x + y; // z will be NaN
NaN একটি নাম্বার। typeOf NaN নাম্বার প্রদান করে।
উদাহরণ
typeof NaN; // returns "number"
নাম্বার অবজেক্টও হতে পারে
সাধারণত জাভাস্ক্রিপ্ট সংখ্যা লিটারেল থেকে তৈরি আদিম মানঃ var x = 123
কিন্তু নাম্বারকে নতুন শব্দ দ্বারা অবজেক্ট হিসাবেও সংজ্ঞায়িত করো যেতে পারেঃ var y = new Number(123)
উদাহরণ
var x = 123; var y = new Number(123);
// typeof x returns number // typeof y returns object
কখনও নাম্বার অবজেক্ট তৈরি করবেন না। তারা সঞ্চালনের গতি মন্থর এবং কদর্য পার্শ্ব প্রতিক্রিয়া সৃষ্টি করে।
যখন সমতা == অপারেটর ব্যবহার করেন তখন সমান সংখ্যা সমান দেখায়:
উদাহরণ
var x = 500; var y = new Number(500);
// (x == y) is true because x and y have equal values
যখন সমতা === অপারেটর ব্যবহার করেন তখন সমান সংখ্যা সমান হয়না কারণ === অপারেটর টাইপ এবং মান উভয় সমতা বিবেচনা করে।
উদাহরণ
var x = 500; var y = new Number(500);
// (x === y) is false because x and y have different types
অথবা এমনকি খারাপ. অবজেক্টস তুলনা করা যাবে নাঃ
উদাহরণ
var x = new Number(500); var y = new Number(500);
// (x == y) is false because objects cannot be compared
জাভাস্ক্রিপ্ট অবজেক্টস তুলনা করা যায় না।
নাম্বার প্রোপার্টি এবং মেথড
আদিম মানের (3.14 বা 2014 এর মত) বৈশিষ্ট্য ও পদ্ধতি থাকতে পারে না(কারণ তারা অবজেক্ট না) ।
নাম্বার প্রোপার্টি
প্রোপার্টি | ব্যাখ্যা |
MAX_VALUE | জাভাস্ক্রিপ্ট এ সম্ভব এমন বৃহত্তম সংখ্যা প্রদান করে। |
MIN_VALUE | জাভাস্ক্রিপ্ট এ সম্ভব এমন ক্ষুদ্রতম সংখ্যা প্রদান করে। |
NEGATIVE_INFINITY | অসীমে নেগেটিভ প্রতিনিধিত্ব করে। |
NaN | একটি “সংখ্যা নয়” মান প্রতিনিধিত্ব করে। |
POSITIVE_INFINITY | অসীম প্রতিনিধিত্ব করে। |
উদাহরণ
var x = Number.MAX_VALUE;
এই প্রোপার্টিস শুধুমাত্র Number.MAX_VALUE হিসেবও ওয়াক্সেস করা যেতে পারে।
myNumber.MAX_VALUE, ব্যবহার করে, যেখানে MyNumber একটি পরিবর্তনশীল, অভিব্যক্তি, অথবা মান তা অনির্ধারিত হিসেবে ফিরে আসে।
উদাহরণ
var x = 6;
var y = x.MAX_VALUE; // y becomes undefined