সং

সংখ্যা মধ্যে JavaScript

20টি অনুশীলনী

সংখ্যা সম্পর্কে

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

বিল্ট-ইন অবজেক্ট

সংখ্যা নিয়ে কাজ করার সময় দুটি বিল্ট-ইন অবজেক্ট কাজে লাগে:

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

এরর মান NaN (অর্থাৎ "Not a Number") নিচের ক্ষেত্রে তৈরি হয়।

  • একটি সংখ্যা পার্স করা যায়নি:
    Number('123'); // => 123
    Number('Hello, World!'); // => NaN
    
  • একটি অপারেশন ব্যর্থ হয়েছে:
    Math.sqrt(-64); // => NaN
    
  • একটি অপারেন্ড NaN:
    NaN + 69; // => NaN
    

NaN একমাত্র মান, যা নিজের সমান নয়:

NaN === NaN; // => false

কোনো মান NaN কি না তা যাচাই করতে চাইলে গ্লোবাল ফাংশন isNaN() ব্যবহার করতে হবে:

isNaN(NaN); // => true
isNaN(123); // => false

Infinity

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 দেখুন।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি নতুন একটি উইন্ডো বা ট্যাবে খুলবে

সংখ্যা শিখুন

অনুশীলন লক করা আছে

সংখ্যা অনুশীলন করতে আরও ১টি অনুশীলনী আনলক করুন