অনেক প্রোগ্রামিং ভাষায় বিভিন্ন ধরনের সংখ্যা প্রকাশ করার জন্য আলাদা আলাদা সংখ্যাসূচক টাইপ থাকে, কিন্তু JavaScript-এ আছে মাত্র দুটি:
number: ডাবল-প্রিসিশন ৬৪-বিট ফ্লোটিং-পয়েন্ট ফরম্যাটে (IEEE 754) একটি সংখ্যাসূচক ডেটা টাইপ।
উদাহরণ: -6, -2.4, 0, 0.1, 1, 3.14, 16.984025, 25, 976, 1024.0 এবং 500000.bigint: একটি সংখ্যাসূচক ডেটা টাইপ, যা আরবিট্রারি প্রিসিশন ফরম্যাটে ইন্টিজার প্রকাশ করতে পারে।
উদাহরণ: -12n, 0n, 4n, এবং 9007199254740991n.আপনার যদি আরবিট্রারি প্রিসিশন দরকার হয় বা খুব বড় সংখ্যা নিয়ে কাজ করতে হয়, তাহলে bigint টাইপ ব্যবহার করুন।
অন্যথায় number টাইপই সম্ভবত ভালো বিকল্প।
Math নামে একটি বিল্ট-ইন গ্লোবাল অবজেক্ট আছে, যা বিভিন্ন রাউন্ডিং ফাংশন দেয়।
যেমন, আপনি দশমিক সংখ্যাকে নিকটতম পূর্ণসংখ্যায় নিচের দিকে (floor) বা উপরের দিকে (ceil) রাউন্ড করতে পারেন।
Math.floor(234.34); // => 234
Math.ceil(234.34); // => 235
সংখ্যার উপর মৌলিক গাণিতিক কাজ করার জন্য JavaScript ৬টি ভিন্ন অপারেটর দেয়।
+: যোগ অপারেটর দিয়ে সংখ্যাগুলোর সমষ্টি বের করা হয়।-: বিয়োগ অপারেটর দিয়ে দুটি সংখ্যার পার্থক্য বের করা হয়*: গুণ অপারেটর দিয়ে দুটি সংখ্যার গুণফল বের করা হয়।/: ভাগ অপারেটর দিয়ে দুটি সংখ্যাকে ভাগ করা হয়।2 - 1.5; //=> 0.5
19 / 2; //=> 9.5
%: ভাগশেষ অপারেটর দিয়ে একটি ভাগের ভাগশেষ বের করা হয়।
40 % 4; // => 0
-11 % 4; // => -3
**: সূচক অপারেটর দিয়ে একটি সংখ্যাকে ঘাতে উন্নীত করা হয়।
4 ** 3; // => 64
4 ** 1 / 2; // => 2
একই লাইনে একাধিক অপারেটর ব্যবহার করলে JavaScript এই প্রিসিডেন্স টেবিলে দেখানো অনুযায়ী একটি প্রাধান্যের ক্রম মেনে চলে। আমাদের প্রসঙ্গে সহজ করে বললে, JavaScript আমাদের প্রাথমিক গণিতের ক্লাসে শেখা PEDMAS নিয়মটি ব্যবহার করে, যার পুরো অর্থ: Parentheses, Exponents, Division/Multiplication, Addition/Subtraction (অর্থাৎ বন্ধনী, সূচক, ভাগ/গুণ, যোগ/বিয়োগ)।
const result = 3 ** 3 + 9 * 4 / (3 - 1);
// => 3 ** 3 + 9 * 4/2
// => 27 + 9 * 4/2
// => 27 + 18
// => 45
শর্টহ্যান্ড অ্যাসাইনমেন্ট অপারেটর হলো একটি ভ্যারিয়েবলের উপর গাণিতিক অপারেশন চালিয়ে নতুন মানটি সেই একই ভ্যারিয়েবলে অ্যাসাইন করার কোড লেখার ছোট একটি উপায়।
যেমন, দুটি ভ্যারিয়েবল x ও y ধরা যাক।
তাহলে x += y আর x = x + y একই।
প্রায়ই এটি ভ্যারিয়েবল y-এর বদলে একটি সংখ্যার সাথে ব্যবহার করা হয়।
বাকি ৫টি অপারেশনও একই ধরনে করা যায়।
let x = 5;
x += 25; // x is now 30
let y = 31;
y %= 3; // y is now 1
এই অনুশীলনীতে আপনি এমন কোড লিখবেন যা একজন ফ্রিল্যান্সারকে নির্দিষ্ট কিছু প্রকল্পের দাম নিয়ে তার ক্লায়েন্টদের সাথে যোগাযোগ করতে সাহায্য করবে। ক্লায়েন্টদের খরচ দ্রুত হিসাব করার জন্য আপনি কয়েকটি ইউটিলিটি ফাংশন লিখবেন।
ratePerHour ভ্যারিয়েবল আর dayRate ফাংশন দুটোই টাকার সাথে সম্পর্কিত।
পরিমাপের একক হলো প্রতি একক সময়ের জন্য টাকা: যথাক্রমে ঘণ্টা আর দিন।
একজন ক্লায়েন্ট ফ্রিল্যান্সারের সাথে যোগাযোগ করে তার হার সম্পর্কে জানতে চায়। ফ্রিল্যান্সার ব্যাখ্যা করেন যে তিনি দিনে ৮ ঘণ্টা কাজ করেন। তবে প্রকল্পের জন্য তার শুধু ঘণ্টাপ্রতি হারটিই জানা। ঘণ্টাপ্রতি হার জানা থাকলে দৈনিক হার হিসাব করতে তাকে সাহায্য করুন।
dayRate(89);
// => 712
দৈনিক হার রাউন্ড করতে বা "fixed" নির্ভুলতায় বদলানোর দরকার নেই।
অন্য একদিন একজন প্রজেক্ট ম্যানেজার ফ্রিল্যান্সারকে নির্দিষ্ট বাজেটের একটি প্রকল্পে কাজ করার প্রস্তাব দেন। নির্দিষ্ট বাজেট আর ফ্রিল্যান্সারের ঘণ্টাপ্রতি হার জানা থাকলে, বাজেট শেষ হওয়ার আগে তিনি কত দিন কাজ করবেন তা হিসাব করতে তাকে সাহায্য করুন। ফলাফলটি অবশ্যই নিকটতম পূর্ণ সংখ্যায় নিচের দিকে রাউন্ড করতে হবে।
daysInBudget(20000, 89);
// => 28
প্রায়ই ফ্রিল্যান্সারের ক্লায়েন্টরা কয়েক মাস জুড়ে চলা প্রকল্পে কাজের জন্য তাকে ভাড়া করেন।
এসব ক্ষেত্রে ফ্রিল্যান্সার প্রতি পূর্ণ মাসের জন্য ছাড় দেওয়ার সিদ্ধান্ত নেন, আর বাকি দিনগুলোর বিল দৈনিক হারে হয়।
আপনার দারুণ ওয়ার্ক-লাইফ ব্যালান্সের কারণে আপনি প্রতি ক্যালেন্ডার মাসে মাত্র ২২ দিন কাজ করেন, তাই প্রতিটি মাসেই ২২টি বিলযোগ্য দিন থাকে।
ঘণ্টাপ্রতি হার, প্রকল্পে থাকা বিলযোগ্য দিনের সংখ্যা আর মাসিক ছাড়ের হার জানা থাকলে, এমন প্রকল্পে তার আনুমানিক খরচ হিসাব করতে তাকে সাহায্য করুন।
ছাড়টি সবসময় একটি সংখ্যা হিসেবে পাঠানো হয়, যেখানে 42% হয়ে যায় 0.42।
ফলাফলটি অবশ্যই নিকটতম পূর্ণ সংখ্যায় উপরের দিকে রাউন্ড করতে হবে।
priceWithMonthlyDiscount(89, 230, 0.42);
// => 97972
Exercism-এ সাইন আপ করুন, JavaScript ট্র্যাকের 37টি কনসেপ্ট159টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।