JavaScript-এ দুই ধরনের সংখ্যা আছে: সংখ্যা আর "bigint"।
সংখ্যাই সবচেয়ে বেশি ব্যবহৃত হয় এবং ডাবল-প্রিসিশন ৬৪-বিট ফ্লোটিং-পয়েন্ট ফরম্যাটে সংখ্যাসূচক ডেটা টাইপ বোঝায়।
number: ডাবল-প্রিসিশন ৬৪-বিট ফ্লোটিং-পয়েন্ট ফরম্যাটের (IEEE 754) একটি সংখ্যাসূচক ডেটা টাইপ।
উদাহরণ: -6, -2.4, 0, 0.1, 1, 3.14, 16.984025, 25, 976, 1024.0 এবং 500000.bigint: একটি সংখ্যাসূচক ডেটা টাইপ, যা আরবিট্রারি প্রিসিশন ফরম্যাটে ইন্টিজার প্রকাশ করতে পারে।
উদাহরণ: -12n, 0n, 4n এবং 9007199254740991n.let numericValue = 42;
// => 42
JavaScript কোডে 42-এর মতো সংখ্যা লিটারাল একটি ফ্লোটিং-পয়েন্ট মান, কোনো ইন্টিজার নয়।
প্রচলিত দৈনন্দিন ব্যবহারে আলাদা কোনো ইন্টিজার টাইপ নেই।
দৈনন্দিন ব্যবহারে number টাইপের জায়গা নেওয়ার জন্য bigint টাইপ বানানো হয়নি।
42 এখনও একটি Number, BigInt নয়।
সংখ্যা 0b101, 0o13, 0x0A-এর মতো লিটারাল রূপেও লেখা যায়। সংখ্যার লেক্সিকাল গ্রামার সম্পর্কে আরও জানুন এখানে।
E-নোটেশন এমন একটি সংখ্যা বোঝায়, যেটিকে ১০-এর একটি নির্দিষ্ট ঘাত দিয়ে গুণ করতে হয়।
E-নোটেশনের ফরম্যাট হলো: একটি সংখ্যা, তারপর e বা E, তারপর যে ১০-এর ঘাত দিয়ে গুণ করতে হবে সেটি।
const num = 3.125e7;
// => 31250000
// The notation essentially says, "Take 3.125 and multiply it by 10^7".
খুব ছোট সংখ্যা প্রকাশেও E-নোটেশন ব্যবহার করা যায়:
const num = 325987e-6; // Equals 0.325987
// The notation essentially says, "Take 325987 and multiply it by 10^-6.
বড় সংখ্যা ব্যবহারকারীর জন্য পড়া সহজ করতে আন্ডারস্কোর ব্যবহার করা যায়। কম্পাইলার আন্ডারস্কোরগুলো পুরোপুরি উপেক্ষা করে।
const num = 1_000_000; // You can read this as 1,000,000
console.log(num);
// => 1000000
সংখ্যা নিয়ে কাজ করার সময় দুটি বিল্ট-ইন অবজেক্ট কাজে লাগে:
Number: কমন / দরকারি মানের জন্য স্ট্যাটিক প্রোপার্টি, টাইপ-চেকিং ও টাইপ-কনভার্সন-এর জন্য স্ট্যাটিক মেথড, টাইপ-কনভার্সন ও সংখ্যাকে স্ট্রিং হিসেবে ফরম্যাট করা-র জন্য ইনস্ট্যান্স মেথড।Math: গাণিতিক ধ্রুবক ও ফাংশনের জন্য প্রোপার্টি ও মেথড, BigInt-এর সাথে কাজ করে না।Math-এ সংখ্যা রাউন্ড করার মেথডও আছে।
উপলব্ধ রাউন্ডিং অপশন সম্পর্কে আরও পড়তে পারেন রাউন্ডিং নিয়ে javascript.info-র এই আর্টিকেলে।
Math.floor(234.34); // => 234
Math.ceil(234.34); // => 235
Number বিল্ট-ইন গ্লোবাল object আবার একটি গ্লোবাল function, যা সংখ্যার মতো প্রায় যেকোনো কিছুকে number-এ রূপান্তর করতে ব্যবহার করা যায়।
একটি string-কে পার্স করে number বানানোর চেয়ে এটি কম নমনীয়।
const date = new Date('December 17, 1995 03:24:00');
const unix = Number(date);
unix;
// => 819199440000
JavaScript-এ সংখ্যার সর্বোচ্চ (এবং সর্বনিম্ন / সর্বোচ্চ ঋণাত্মক) মানের তিনটি ধরন আছে:
VALUE: Number.MAX_VALUE ও Number.MIN_VALUE দিয়ে পাওয়া যায়INFINITY: Number.POSITIVE_INFINITY ও Number.NEGATIVE_INFINITY দিয়ে পাওয়া যায়SAFE_INTEGER: Number.MAX_SAFE_INTEGER ও Number.MIN_SAFE_INTEGER দিয়ে পাওয়া যায়JavaScript-এ সংখ্যা যেভাবে তৈরি, সেজন্য Number.MIN_VALUE আর Number.MAX_VALUE-এর মাঝের প্রতিটি সংখ্যা প্রকাশ করা যায় না।
তবে Number.MIN_SAFE_INTEGER - 1 আর Number.MAX_SAFE_INTEGER + 1-এর মাঝের প্রতিটি সংখ্যা প্রকাশ করা যায়।
JavaScript-এ কয়েকটি বিশেষ সংখ্যার মান আছে:
NaN আর Infinity.+0 আর -0.এরর মান NaN (অর্থাৎ "Not a Number") নিচের ক্ষেত্রে তৈরি হয়।
Number('123'); // => 123
Number('Hello, World!'); // => NaN
Math.sqrt(-64); // => NaN
NaN + 69; // => NaN
NaN একমাত্র মান, যা নিজের সমান নয়:
NaN === NaN; // => false
কোনো মান NaN কি না তা যাচাই করতে চাইলে গ্লোবাল ফাংশন isNaN() ব্যবহার করতে হবে:
isNaN(NaN); // => true
isNaN(123); // => false
Infinity একটি এরর মান, যা দুটি সমস্যার একটি বোঝায়:
Math.pow(2, 1024); // => Infinity
6 / 0; // => Infinity
-6 / 0; // => -Infinity
Infinity অন্য যেকোনো সংখ্যার চেয়ে বড় (NaN ছাড়া)।
একইভাবে, -Infinity অন্য যেকোনো সংখ্যার চেয়ে ছোট (NaN ছাড়া)।
গ্লোবাল ফাংশন isFinite() দিয়ে যাচাই করা যায় কোনো মান আসল সংখ্যা কি না (অসীম বা NaN কোনোটিই নয়):
isFinite(80085); // => true
isFinite(Infinity); // => false
isFinite(NaN); // => false
+0 আর -0 JavaScript-এ আলাদা সংখ্যা। এমন একটি সংখ্যা প্রকাশ করলে এগুলো তৈরি হতে পারে, যা এত ছোট যে 0 থেকে আলাদা করা যায় না।
সাইনযুক্ত শূন্য দিয়ে লিখে রাখা যায় আপনি "কোন দিক থেকে" শূন্যের কাছে পৌঁছেছেন; অর্থাৎ সংখ্যাটি শূন্য হিসেবে গণ্য হওয়ার আগে তার চিহ্ন কী ছিল।
একটি মাত্র শূন্য আছে ধরে নেওয়াই সবচেয়ে ভালো অভ্যাস।
সংখ্যাগুলোর মান একই হলে সেগুলো সমান ধরা হয়।
1 == 1.0;
// => true
1 === 1.0;
// => true
// Remember, all numbers are floating-points, so this is
// different syntax for the exact same value.
1 === 1n;
// => false
// Strictly checking a number against a bigint will always result
// in false.
সাধারণভাবে তুলনা এবং JavaScript-এ সংখ্যাসূচক মান তুলনা সম্পর্কে আরও তথ্যের জন্য তুলনা দেখুন।
JavaScript-এ সংখ্যা ফ্লোটিং-পয়েন্ট সংখ্যা হওয়ায় এই মানগুলো দিয়ে সব গণিতই ফ্লোটিং-পয়েন্ট গণিত। তাই JavaScript-এ:
0.1 + 0.2 === 0.3;
// => false
সংক্ষিপ্ত ব্যাখ্যার জন্য 0.30000000000000004.com দেখুন এবং বিশদ ব্যাখ্যার জন্য Oracle-এর Numerical Computation Guide-এর "What Every Computer Scientist Should Know About Floating-Point Arithmetic" বইয়ের পরিশিষ্ট D দেখুন।