javascript - for - জাভাস্ক্রিপ্টে সংখ্যার তুলনায় স্ট্রিং কেন কাজ করে



javascript download for windows 7 (2)

কারণ জাভাস্ক্রিপ্টটি >= এবং <= (এবং আরও বেশ কয়েকটি অপারেটর )কে এমনভাবে সংজ্ঞায়িত করে যা তাদের অপারেশনগুলিকে বিভিন্ন ধরণের জন্য জোর করে। এটি অপারেটরের সংজ্ঞার মাত্র একটি অংশ।

< , > , <= , এবং >= , বিশদ বিবরণ নির্দিষ্টকরণের 11.1.5 .5 এ রাখা হয়েছে। সংক্ষিপ্ত সংস্করণটি হ'ল: যদি উভয় অপারেন্ডগুলি স্ট্রিং হয় (প্রয়োজনে বস্তু থেকে জোর করে নেওয়ার পরে), এটি একটি স্ট্রিং তুলনা করে। অন্যথায়, এটি অপারেটরগুলিকে সংখ্যায় জোর করে এবং একটি সংখ্যার তুলনা করে।

ফলস্বরূপ, আপনি মজাদার ফলাফল পান, যেমন "90" > "100" (উভয় স্ট্রিং, এটি একটি স্ট্রিং তুলনা) তবে "90" < 100 (এর মধ্যে একটি সংখ্যা এটি একটি সংখ্যার তুলনা)। :-)

এই তুলনাটি কি এর মতো রাখা ঠিক আছে বা এক্সকে পূর্ণসংখ্যায় রূপান্তর করতে পার্সেন্ট () ব্যবহার করা উচিত?

এটা মতামত একটি বিষয়। কিছু লোক অন্তর্নিহিত জবরদস্তির উপর নির্ভর করা সম্পূর্ণ জরিমানা বলে মনে করে; অন্যরা ভাবেন যে এটি তা নয়। কিছু উদ্দেশ্যমূলক যুক্তি আছে। উদাহরণস্বরূপ, ধরুন আপনি অন্তর্নিহিত রূপান্তরটির উপর নির্ভর করেছেন এবং এটি ঠিক ছিল কারণ আপনার সেই সংখ্যার ধ্রুবক ছিল তবে পরে আপনি x সাথে অন্য কোনও মানের সাথে তুলনা করছেন যা আপনি একটি ইনপুট ক্ষেত্র থেকে পেয়েছিলেন। এখন আপনি স্ট্রিংগুলির সাথে তুলনা করছেন তবে কোডটি একই দেখাচ্ছে। তবে আবার এটি মতের বিষয় এবং আপনার নিজের পছন্দটি করা উচিত।

আপনি যদি প্রথমে সংখ্যায় স্পষ্টভাবে রূপান্তর করার সিদ্ধান্ত নেন, parseInt আপনি যা চান তা হতে পারে বা নাও পারে এবং এটি অন্তর্নিহিত রূপান্তর হিসাবে একই কাজ করে না । এখানে বিকল্পগুলির একটি রিডাউন রয়েছে:

  • parseInt(str[, radix]) - শেষে অতিরিক্ত অক্ষর উপেক্ষা করে স্ট্রিংয়ের শুরুতে যতটা পূর্ণ (পূর্ণসংখ্যা) সংখ্যায় রূপান্তর করতে পারে তেমন রূপান্তর করে । সুতরাং parseInt("10x") 10 ; x উপেক্ষা করা হয়। একটি alচ্ছিক রেডিক্স (সংখ্যা বেস) আর্গুমেন্ট সমর্থন করে, তাই parseInt("15", 16) 21 ( 15 হেক্সে)। যদি কোনও রেডিক্স না থাকে তবে দশমিকটি ধরে নেওয়া হয় যদি না স্ট্রিং 0x (বা 0 0X ) দিয়ে শুরু হয়, তবে সেই ক্ষেত্রে এটি সেগুলি এড়িয়ে যায় এবং হেক্স অনুমান করে। নতুন 0 0o (বাইনারি) বা 0o (নতুন স্টাইলের অক্টাল) উপসর্গগুলি সন্ধান করে না; উভয় 0 হিসাবে পার্স করা। (কিছু ব্রাউজারগুলি 0 দিয়ে শুরু করে স্ট্রিংকে অষ্টাল হিসাবে ব্যবহার করত; আচরণটি কখনই নির্দিষ্ট করা হয়নি এবং ES5 স্পেসিফিকেশনে [বিশেষভাবে বঞ্চিত] [2] ছিল না।) কোনও পার্সেবল সংখ্যা না পাওয়া গেলে এনএএন ফেরত দেয়।

  • Number.parseInt(str[, radix]) - উপরের Number.parseInt(str[, radix]) হিসাবে ঠিক একই ফাংশন। (আক্ষরিক অর্থে, সংখ্যা। Number.parseInt === parseInt true )

  • parseFloat(str) - parseInt মতো তবে ভাসমান-পয়েন্ট সংখ্যাগুলি করে এবং কেবলমাত্র parseFloat(str) সমর্থন করে। আবার স্ট্রিংয়ের অতিরিক্ত অক্ষর উপেক্ষা করা হবে, সুতরাং parseFloat("10.5x") 10.5 ( x উপেক্ষা করা হবে)। কেবল দশমিক সমর্থিত হিসাবে, parseFloat("0x15") 0 (কারণ পার্সিং x এ শেষ হয়)। কোনও পার্সেবল ডিজিট না পাওয়া গেলে NaN

  • Number.parseFloat(str) - উপরের parseFloat হিসাবে ঠিক একই ফাংশন।

  • Unary + , যেমন +str - (উদাহরণস্বরূপ, অন্তর্নিহিত রূপান্তর) ভাসমান পয়েন্ট এবং জাভাস্ক্রিপ্টের স্ট্যান্ডার্ড নম্বর স্বরলিপি ব্যবহার করে পুরো স্ট্রিংকে একটি সংখ্যায় রূপান্তরিত করে (কেবলমাত্র অঙ্ক এবং একটি দশমিক পয়েন্ট = দশমিক; 0x উপসর্গ = হেক্স; 0 বি = বাইনারি [ES2015 +]; 0o উপসর্গ = অক্টাল [ES2015 +]; কিছু বাস্তবায়ন নেতৃস্থানীয় 0 কে অষ্টাল হিসাবে বিবেচনা করার জন্য এটি বাড়িয়ে দেয়, তবে কঠোর মোডে নয়)। +"10x" NaN কারণ x উপেক্ষা করা হয় না +"10" 10 , +"10.5" 10.5 , +"0x15" 21 , +"0o10" 8 [ইএস2015 +], +"0b101" হ'ল 5 [ইএস2015 +] + একটি গ্যাচা আছে: +"" 0 , আপনি আশা করতে পারেন তেমন নয়।

  • Number(str) - হুবহু অন্তর্নিহিত রূপান্তরের মতো (উদাহরণস্বরূপ, উপরে ইউনারি + মতো) তবে কিছু বাস্তবায়নে ধীর। (এটি সম্ভবত ব্যাপার হওয়ার সম্ভাবনা নয়))

  • বিটওয়্যার বা শূন্যের সাথে, উদাহরণস্বরূপ str|0 - অন্তর্ভুক্ত রূপান্তর, যেমন +str , তবে এটি সংখ্যাটি 32-বিট পূর্ণসংখ্যায় রূপান্তর করে (এবং স্ট্রিংটিকে বৈধ সংখ্যায় রূপান্তর করতে না পারলে NaN কে 0 রূপান্তর করে)।

সুতরাং যদি এটি ঠিক থাকে যে স্ট্রিংয়ের অতিরিক্ত বিটগুলি উপেক্ষা করা হয়, parseFloat বা parseFloat ঠিক আছে। রেডিক্স নির্দিষ্ট করার জন্য parseInt বেশ কার্যকর। সম্পূর্ণ স্ট্রিং বিবেচনা করা হয়েছে তা নিশ্চিত করার জন্য ইউনারি + দরকারী। আপনার পছন্দ নেয়। :-)

এবং পরিশেষে: আপনি যদি সংখ্যায় রূপান্তর করেন এবং ফলাফলটি NaN কিনা তা জানতে চান, আপনি if (convertedValue === NaN) হতে if (convertedValue === NaN) । তবে এটি কার্যকর হবে না , কারণ রিক যেমন নীচে তুলে NaN , NaN এর সাথে জড়িত তুলনা সবসময় মিথ্যা। পরিবর্তে, if (isNaN(convertedValue)) এটি হয় if (isNaN(convertedValue))

https://ffff65535.com

আমি এইচটিএমএল পাঠ্য ক্ষেত্র থেকে প্রাপ্ত একটি মানকে পূর্ণসংখ্যার সাথে তুলনা করার চেষ্টা করছি। এবং এটি প্রত্যাশার মতো কাজ করে। শর্তটি হ'ল -

x >= 1 && x <= 999;

যেখানে x হ'ল পাঠ্য ক্ষেত্রের মান। যখনই মান 1-999 (সমেত) এর মধ্যে হয় তখন শর্তটি true হয়, অন্যথায় false । সমস্যাটি হ'ল, পাঠ্য ক্ষেত্র থেকে আসা মানটি স্ট্রিং টাইপের এবং আমি এটি পূর্ণসংখ্যার প্রকারের সাথে তুলনা করি। এই তুলনাটি কি এর মতো রাখা ঠিক আছে বা এক্সকে পূর্ণসংখ্যায় রূপান্তর করতে পার্সেন্ট () ব্যবহার করা উচিত?


ভ্যার স্ট্রিং হলে আপনার parseInt ব্যবহার করা উচিত। datatype মানটির তুলনা করতে = যুক্ত করুন:

parseInt(x) >== 1 && parseInt(x) <== 999;




javascript