একটি সংখ্যা মান সংখ্যাসূচক অক্ষরের যেকোনো সিরিজ দিয়ে গঠিত, উদাহরণস্বরূপ:
5
সংখ্যা ডেটা টাইপের মধ্যে কয়েকটি বিশেষ বৈশ্বিক বৈশিষ্ট্যও রয়েছে যা সংখ্যাসূচক ধারণাগুলিকে প্রতিনিধিত্ব করে, যেমন Infinity এবং NaN একটি মান যার অর্থ "সংখ্যা নয়", অ-সংখ্যা মানের উপর গাণিতিক গণনা করার চেষ্টা করার একটি সম্ভাব্য ফলাফল।
সংখ্যা বস্তু
যখন একটি মান Number() ফাংশনে পাস করা হয়, তখন সেই মানটি সংখ্যার সমতুল্যে রূপান্তরিত হয়। উদাহরণস্বরূপ, একটি সাংখ্যিক স্ট্রিং একটি সমতুল্য সংখ্যা আদিম ফলাফল:
Number( "10" );
> 10
Number() এ একটি false বা null মান পাস করা 0 প্রদান করে এবং true 1 প্রদান করে।
Number( null );
> 0
Number( false );
> 0
Number( true );
> 1`
যদি একটি মান রূপান্তরিত করা না যায়, যেমন undefined বা অ-সংখ্যাসূচক অক্ষর ধারণকারী একটি স্ট্রিংয়ের ক্ষেত্রে, Number ফাংশনটি NaN প্রদান করে:
Number( undefined );
> NaN
Number( "The number 3." );
> NaN
প্রোটোটাইপল ইনহেরিট্যান্সে বিশদ হিসাবে, আপনার সম্ভবত Number অবজেক্টটিকে কনস্ট্রাক্টর হিসাবে ব্যবহার করার খুব কম কারণ থাকবে না, কারণ এটি একটি সংখ্যার আক্ষরিক পরিবর্তে একটি Number অবজেক্ট তৈরি করে।
let numObject = new Number( 15 );
numObject;
> Number { 15 }
এই বস্তুটি গাণিতিক ক্রিয়াকলাপের জন্য নির্ধারিত মান হিসাবে আচরণ করে, তবে এটি সংখ্যার আক্ষরিকগুলির সাথে কঠোর সমতা তুলনা করতে ব্যর্থ হয় কারণ আক্ষরিক মানের উপর কোনও ব্যবহারিক সুবিধা প্রদান না করে ডেটা প্রকারগুলি মেলে না৷
let tenObject = new Number( 10 );
tenObject + 5;
> 15
tenObject === 10;
> false
ফ্লোট এবং পূর্ণসংখ্যা
জাভাস্ক্রিপ্টে শুধুমাত্র একটি সংখ্যার ধরন রয়েছে: 64-বিট IEEE 754-1985 -2^1024 এবং 2^1024 এর মধ্যে দ্বিগুণ নির্ভুলতা ফ্লোটিং-পয়েন্ট সংখ্যা । জাভাস্ক্রিপ্ট মেমরিতে কোনো সংখ্যা সংরক্ষণ করার আগে, এটি প্রথমে সেই সংখ্যাটিকে একটি বাইনারি ফ্লোটিং-পয়েন্ট নম্বরে রূপান্তর করে, যাকে ফ্লোটও বলা হয়।
এই 64-বিট স্টোরেজ (একটি ধনাত্মক বা নেতিবাচক "চিহ্ন" বিট, একটি সূচকের জন্য 11 বিট, এবং একটি ভগ্নাংশের জন্য 52 বিট) যে কোনও সংখ্যার সাথে স্পষ্টতা ত্রুটির কারণ হতে পারে যা একটি অনুমোদিত সীমার মধ্যে মাপসই হয় না। এই সীমাবদ্ধতা জাভাস্ক্রিপ্টের সংখ্যা ডেটা টাইপের অন্তর্নিহিত।
0.1 + 0.7
> 0.7999999999999999
একটি সংখ্যার মান পরিবর্তে একটি পূর্ণসংখ্যা হিসাবে সংরক্ষণ করা যেতে পারে, একটি ভাসমান-বিন্দু সংখ্যা -(2^53 − 1) এবং 2^53 − 1 এর মধ্যে কোনো ভগ্নাংশ ছাড়াই। যেহেতু ফ্লোট এবং পূর্ণসংখ্যা একই মৌলিক উপায়ে সংরক্ষণ করা হয়, এই সংখ্যাগুলি কীভাবে কাজ করে তাতে কোনও বাস্তব পার্থক্য নেই। যাইহোক, যথার্থ ত্রুটি এড়াতে আমরা যখনই সম্ভব পূর্ণ সংখ্যা ব্যবহার করার পরামর্শ দিই।
সংখ্যা অপারেটর
আপনি যখন সংখ্যা আদিম সহ স্ট্যান্ডার্ড গাণিতিক অপারেটর ব্যবহার করেন, তখন ক্রিয়াকলাপের গাণিতিক ক্রম প্রযোজ্য হয়: বন্ধনীতে মোড়ানো যেকোন অভিব্যক্তিগুলি প্রথমে মূল্যায়ন করা হয়, তারপরে সূচক, গুণ, ভাগ, যোগ এবং বিয়োগ।
| অপারেটর | নাম | বর্ণনা | ব্যবহার | ফলাফল |
|---|---|---|---|---|
+ | সংযোজন | 2+2 | 4 | |
- | বিয়োগ | 4-2 | 2 | |
* | গুণ | 2*5 | 10 | |
/ | বিভাগ | 10/5 | 2 | |
++ | ইনক্রিমেন্ট | একটি সংখ্যার সাথে একটি যোগ করে | 2++ | 3 |
-- | হ্রাস | একটি সংখ্যা থেকে একটি বিয়োগ করে | 3-- | 2 |
** | সূচক | প্রথম উত্থাপনের ফলাফল প্রদান করে দ্বিতীয় অপারেন্ডের শক্তি থেকে অপারেন্ড। | 2**4 | 16 |
% | অবশিষ্ট | অবশিষ্ট অবশিষ্ট ফেরত দেয় যখন প্রথম অপারেন্ডটি দ্বিতীয় অপারেন্ড দ্বারা বিভক্ত। | 12%5 | 2 |
আপনি একটি ভেরিয়েবলের মানের উপর একটি গাণিতিক ক্রিয়াকলাপ সঞ্চালনের জন্য গাণিতিক অ্যাসাইনমেন্ট অপারেটরগুলি ব্যবহার করতে পারেন এবং অবিলম্বে সেই নতুন-গণনা করা মানটি পরিবর্তনশীলকে বরাদ্দ করতে পারেন।
| অপারেটর | নাম | ব্যবহার |
|---|---|---|
+= | সংযোজন অ্যাসাইনমেন্ট | myValue += 2 |
-= | বিয়োগ অ্যাসাইনমেন্ট | myValue -= 2 |
*= | গুণ বরাদ্দ | myValue *= 2 |
/= | ডিভিশন অ্যাসাইনমেন্ট | myValue /= 2 |
**= | এক্সপোনেন্ট অ্যাসাইনমেন্ট | myValue **= 2 |
%= | অবশিষ্ট অ্যাসাইনমেন্ট | myValue %= 2 |
প্রতীকী মান
আদিম সংখ্যাটি কয়েকটি বিশেষ ক্ষেত্রেও প্রযোজ্য: "একটি সংখ্যা নয়" মান ( NaN ) এবং অসীমের প্রতিনিধিত্বকারী একটি মান যা হয় ধনাত্মক ( Infinity ) বা ঋণাত্মক ( -Infinity ) হতে পারে।
আপনি শূন্য দ্বারা ভাগ করার ফলে খুব কমই Infinity মুখোমুখি হতে পারেন, এমন একটি ক্ষেত্রে যেখানে বেশিরভাগ প্রোগ্রামিং ভাষা পরিবর্তে একটি ত্রুটি ফেলে:
10 / 0
> Infinity
মনে রাখবেন জাভাস্ক্রিপ্ট কেস-সংবেদনশীল। Infinity হল একটি সংখ্যা ডেটা টাইপ যা অসীমের ধারণার প্রতিনিধিত্ব করে, কিন্তু infinity কোন বিশেষ অর্থ নেই:
Infinity
> Infinity
infinity
> Uncaught ReferenceError: infinity is not defined
NaN (অর্থাৎ " একটি সংখ্যা নয় ") আরও ঘন ঘন দেখায়, যখন একটি গাণিতিক অপারেশনের ফলাফল একটি সংখ্যা হিসাবে প্রকাশ করা যায় না। উদাহরণস্বরূপ, যেহেতু জাভাস্ক্রিপ্ট মান এবং প্রসঙ্গ থেকে ডেটা টাইপ অনুমান করার চেষ্টা করে, একটি গাণিতিক অপারেশনে শুধুমাত্র একটি সংখ্যা ধারণকারী একটি স্ট্রিং আক্ষরিক ব্যবহার করা যেতে পারে:
"2" * 2;
> 4
যাইহোক, যদি সেই স্ট্রিংটিকে একটি সংখ্যার মান হিসাবে পার্স করা না যায়, তাহলে গাণিতিক ক্রিয়াকলাপের ফলে একটি অ-সংখ্যা হয়:
"two" * 2;
> NaN
যে কোনও ক্ষেত্রেই NaN ফেরত দেওয়া হয় যেখানে একটি গাণিতিক ক্রিয়াকলাপে একটি সংখ্যা হিসাবে একটি অবৈধ মান উপস্থাপন করা হয়। উদাহরণ নিম্নলিখিত অন্তর্ভুক্ত:
- ব্যর্থ সংখ্যা রূপান্তর (উদাহরণস্বরূপ,
parseInt( undefined )) - পাটিগণিত ক্রিয়াকলাপ যেখানে ফলাফল একটি বাস্তব সংখ্যা নয় (উদাহরণস্বরূপ,
0 / 0,Math.sqrt( -10 )) - একটি অনির্দিষ্ট ফলাফল সহ একটি গাণিতিক অপারেশন (
0 * Infinity) - একটি গাণিতিক ক্রিয়াকলাপ যাতে একটি স্পষ্ট
NaN(NaN + 2) বা একটিNaNফলাফল (2 * "string" / 2) অন্তর্ভুক্ত থাকে
আপনার উপলব্ধি পরীক্ষা করুন
Number() এ false পাস করার ফলাফল কী?
নিম্নলিখিত গাণিতিক অপারেশনের ফলাফল কী?
"Six" * 3