পার্সইন্ট কল করার সময় আমাদের কেন রেডিক্স প্যারামিটার ব্যবহার করা দরকার?


উত্তর:


103

আপনি সবসময় কোনও বেস 10 সংখ্যায় পূর্ণসংখ্যাটি পার্স করতে চান না, সুতরাং রেডিক্স সরবরাহ করা আপনাকে অন্যান্য নম্বর সিস্টেম নির্দিষ্ট করার অনুমতি দেয়।

মূল একক অঙ্কের মানগুলির সংখ্যা। হেক্সিডিসিমাল 16 হবে Oct অক্টাল 8 হবে, বাইনারি 2 হবে এবং আরও ...

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

// Numbers with a leading 0 used a radix of 8 (octal) before ECMAScript 5.
// These days, browsers will treat '0101' as decimal.
var result = parseInt('0101');

// Numbers that start with 0x use a radix of 16 (hexidecimal)
var result = parseInt('0x0101');

// Numbers starting with anything else assumes a radix of 10
var result = parseInt('101');

// Or you can specify the radix, in this case 2 (binary)
var result = parseInt('0101', 2);

4
সুতরাং পার্সেন্ট ('0101') 101 বা 65 দেয়?
বিবেক

7
@ বিভেখ - আমি যখন এটির উত্তর পোস্ট করলাম তখন এটি পিছনে ব্যবহৃত হত to গুগল ক্রোমে একটি দ্রুত চেক থেকে বোঝা যাচ্ছে যে তারা কিছুটা পরিবর্তন করেছে। parseInt('0101')এখন ফিরে 101। বিভিন্ন ব্রাউজারের যদিও আলাদা আচরণ থাকতে পারে। নির্ভরযোগ্য ফলাফলের জন্য সর্বদা রডিক্স অন্তর্ভুক্ত করুন।
জাস্টিন নিসনার

@Vivekh - আপনি সাম্প্রতিকতম ডকুমেন্টেশন দেখতে পারেন developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
জাস্টিন Niessner

সর্বাধিক সাম্প্রতিক ডকুমেন্টেশনটি হ'ল ইএস 5 নির্দিষ্ট করে যে কোনও রেডিক্সকে 10 এর সাথে পাস করার মতো করা উচিত নয়, তবে আপনাকে পুরানো ব্রাউজার সমর্থনের জন্য এটি যেভাবেই পাস করার জন্য সতর্ক করে।
হুয়ান মেন্ডেস

4
আমি সবসময় parseInt(x, 0)কিছু কারণের জন্য ব্যবহার করেছি যা আমি এখনই মনে করতে পারি না .. parseInt(x, 10)আমি কি এখনই ভাবছি তার সমান ...
ওজজিআই

35

কারণ যদি আপনার মতো স্ট্রিং নম্বর থাকে 0700এবং আউটপুটটি পূর্ণসংখ্যার হতে চান তবে 700আপনাকে তা জানিয়ে parseInt()দিতে হবে যে এটি অষ্টালের চেয়ে দশমিক সংখ্যা।

console.log(parseInt("0700"));
// 448

// I really wanted decimal (base 10)
console.log(parseInt("0700", 10));
// 700

// What is this? Binary, Decimal, Octal?
console.log(parseInt("0110"));
// 72

// as binary
console.log(parseInt("0110", 2));
// 6
দ্রষ্টব্য আমি আপনার প্রশ্নের অর্ধেক উত্তর দিয়েছি। রেডিক্স আসলে কী তা সম্পর্কে ভাল সংজ্ঞা দেওয়ার জন্য অন্যকে দেখুন।


4
এছাড়াও, বাইনারি পার্সইন্ট ('10101 ', 2)
জো

4
কনসোল.লগ (parseInt ("0700")); ফিরে আসছে // 700 নয় 448.
নেরেন

@ নরেন 8 বছর আগে আমি এটি যা চালিয়েছি তা ব্রাউজারের কনসোলে 448 ছিল modern
মাইকেল বারকোভস্কি

@ মিশেল বারকোভস্কি আমি এই পার্থক্যটি ইদানীং লক্ষ্য করছিলাম - স্পষ্টতই ES60o0
সাও

7

রেডিক্স হল একটি সংখ্যার সিস্টেমের ভিত্তি। এখানে সীমাহীন সংখ্যক সিস্টেম রয়েছে তবে বেশিরভাগ লোকেরা যার সাথে পরিচিত, তা হ'ল বেস 10 (দশমিক) এবং বেস 2 (বাইনারি)।

বিভিন্ন মানগুলিতে সংখ্যার মানগুলি আলাদাভাবে ব্যাখ্যা করা যায়। উদাহরণস্বরূপ, বাইনারি 10 নম্বর দশমিক 2 হিসাবে প্রতিনিধিত্ব করা যেতে পারে।

এর ক্ষেত্রে parseInt(), রেডিক্স আপনাকে ব্যবহারের জন্য বেসটি নির্দিষ্ট করতে দেয়। ডিফল্টরূপে, 10 এর একটি রেডিক্স ব্যবহৃত হয়।

যাইহোক, বেস 10 ব্যবহার করার সময়ও, মূল সূত্রটি সর্বদা নির্দিষ্ট করা উচিত

parseInt("010") // রিটার্নস 8

প্রথম নজরে, আপনি বিবৃতিটি 10 ​​প্রত্যাবর্তনের প্রত্যাশা করতে পারেন the মূল্যের সুস্পষ্ট ব্যবহার বিভ্রান্তি এড়াতে সহায়তা করবে:

parseInt("010", 10) // রিটার্নস: 10


4

মূলগুলি হ'ল সংখ্যা পদ্ধতির বেস নম্বর: http://en.wikedia.org/wiki/Radix

সাধারণত, আপনি কেবলমাত্র রডিক্সটি নির্দিষ্ট করতে হবে যদি আপনি এটি 10 ​​থেকে আলাদা হতে চান তবে আরও সুনির্দিষ্টভাবে ( http://www.w3schools.com/jsref/jsref_parseInt.asp থেকে ):

যদি রেডিক্স প্যারামিটার বাদ দেওয়া হয় তবে জাভাস্ক্রিপ্ট নিম্নলিখিতটি ধরে নিয়েছে:

যদি স্ট্রিংটি "0x" দিয়ে শুরু হয়, তবে রেডিক্সটি 16 (হেক্সাডেসিমাল) যদি স্ট্রিংটি "0" দিয়ে শুরু হয়, তবে মূলটি 8 (অষ্টাল) হয়। এই বৈশিষ্ট্যটি হ্রাস করা হয়েছে যদি স্ট্রিংটি অন্য কোনও মান দিয়ে শুরু হয় তবে মূলটি 10 ​​(দশমিক) হয়


2

কেবলমাত্র কিছু অতিরিক্ত তথ্য যুক্ত করা যা প্রশ্নের স্পষ্ট উত্তর দেয়:

যদি রেডিক্স অপরিজ্ঞাত বা 0 (বা অনুপস্থিত) থাকে তবে জাভাস্ক্রিপ্ট নিম্নলিখিতটি ধরে নেয়:

  • [...]
  • যদি ইনপুট স্ট্রিংটি "0" দিয়ে শুরু হয়, মূলাকর্ষণটি আট (অষ্টাল) বা 10 (দশমিক) হয়। ঠিক কোনটি রেডিক্স চয়ন করা হয় তা বাস্তবায়ন নির্ভর। ECMAScript 5 নির্দিষ্ট করে যে 10 (দশমিক) ব্যবহৃত হয়েছে, তবে সমস্ত ব্রাউজার এখনও এটিকে সমর্থন করে না। এই কারণে যখনই পার্সেন্ট ব্যবহার করবেন তখন সর্বদা একটি রেডিক্স নির্দিষ্ট করুন specify
  • [...]

সূত্র: MDN parseInt ()


2

এটি কেবল আমার মতামত তবে ধারণা যে "আমাদের মূলদিকে ব্যবহার করতে হবে" দ্রুত পুরানো হয়ে যায়। সমস্যাটি সত্যই কিছুটা আগে প্রকৃত ছিল কারণ আইটি বিশ্বের বাইরের লোকেরা সাধারণত দশমিক ব্যতীত সংখ্যা স্বরলিপি ব্যবহার করেন না এবং প্রায়শই দশমিক সংখ্যা "010" এর মতো শূন্য প্যাডযুক্ত সরবরাহ করেন। তবে যেহেতু ECMAScript 6 টি অক্টাল সংখ্যাগুলি "0o" দ্বারা উপসর্গ করা হয়েছে এবং কেবল "0" নয় যেমন এটি ECMAScript 5 এবং 3 তে ছিল So নিরাপদে


1

রেডিক্স প্যারামিটারটি ব্যবহার করতে হবে কোন সংখ্যা সিস্টেমটি নির্দিষ্ট করতে ব্যবহৃত হয়, উদাহরণস্বরূপ, 16 এর একটি রেডিক্স (হেক্সাডেসিমাল) নির্দেশ করে যে স্ট্রিংয়ের সংখ্যাটি হেক্সাডেসিমাল সংখ্যা থেকে দশমিক সংখ্যায় পার্স করা উচিত।

যদি রেডিক্স প্যারামিটার বাদ দেওয়া হয় তবে জাভাস্ক্রিপ্ট নিম্নলিখিতটি ধরে নিয়েছে:

যদি স্ট্রিংটি "0x" দিয়ে শুরু হয় তবে মূলটি 16 (হেক্সাডেসিমাল) হয়

যদি স্ট্রিংটি "0" দিয়ে শুরু হয় তবে মূলটি 8 (অষ্টাল) হয়। এই বৈশিষ্ট্যটি হ্রাস করা হয়

যদি স্ট্রিংটি অন্য কোনও মান দিয়ে শুরু হয় তবে মূলটি 10 ​​(দশমিক)

উত্স ডাব্লু 3 স্কুল


1

পেইসেন্ট () এ র‌ডিক্স কী ?

parseInt()ফাংশন একটি স্ট্রিং parses এবং একটি পূর্ণসংখ্যা ফেরৎ। এটি রেডিক্সের জন্য একটি দ্বিতীয় যুক্তি নেয় যা স্ট্রিংয়ের সংখ্যার ভিত্তি নির্দিষ্ট করেসোর্স মাঝের একটি পূর্ণসংখ্যা হতে পারে 2এবং 36

ফাংশন কলটি দেখতে (সিনট্যাক্স):

parseInt(string, radix);

রেডিক্সের ধারণাটি স্পষ্ট করার জন্য কয়েকটি উদাহরণ

উদাহরণ 1:

var a = parseInt("11", 2);

সোর্স পরিবর্তনশীল বলে যে, "11" হয় বাইনারি সিস্টেম, বা বেস 2 । অতএব, এই উদাহরণটি "11" স্ট্রিংটিকে একটি পূর্ণসংখ্যা 3 তে রূপান্তর করে।

উদাহরণ 2:

var a = parseInt("10011", 16);

এখানে রেডিক্সটি বলে parseInt()যে 10011এটি একটি হেক্সাডেসিমাল সংখ্যা এবং সুতরাং পূর্ণসংখ্যায় এটি রূপান্তরিত হয়65553

মূলত, দীর্ঘ গল্পের সংক্ষেপে, মূল সূত্রটি বলে parseInt()যে 1 ম প্যারামিটার হিসাবে পাস করা স্ট্রিংটি একটি নির্দিষ্ট সিস্টেমের (বাইনারি, হেক্সাডেসিমাল ইত্যাদি) এবং এটি একটি শেষ পণ্য হিসাবে পূর্ণসংখ্যায় রূপান্তরিত হওয়া দরকার।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.