এটি করার জন্য কমপক্ষে 5 টি উপায় রয়েছে:
আপনি যদি কেবল পূর্ণসংখ্যায় রূপান্তর করতে চান তবে অন্য একটি দ্রুত (এবং সংক্ষিপ্ত) উপায় হ'ল ডাবল-বিটওয়াইস নয় (অর্থাত্ দুটি টিল্ড অক্ষর ব্যবহার করে):
যেমন
~~x;
তথ্যসূত্র: http://james.padolsey.com/cool-stuff/double-bitwise-not/
একটি স্ট্রিংকে একটি সংখ্যায় রূপান্তর করার জন্য আমি এখনও অবধি জানি 5 টির মধ্যে তাদের পার্থক্য রয়েছে (আরও বিটওয়াইস অপারেটর রয়েছে যা কাজ করে তবে তারা সবাই একই ফলাফল দেয় ~~)। এই জেএসফিডাল ডিবাগ কনসোলটিতে আপনি যে বিভিন্ন ফলাফল আশা করতে পারেন তা দেখায়: http://jsfiddle.net/TrueBlueAussie/j7x0q0e3/22/
var values = ["123",
undefined,
"not a number",
"123.45",
"1234 error",
"2147483648",
"4999999999"
];
for (var i = 0; i < values.length; i++){
var x = values[i];
console.log(x);
console.log(" Number(x) = " + Number(x));
console.log(" parseInt(x, 10) = " + parseInt(x, 10));
console.log(" parseFloat(x) = " + parseFloat(x));
console.log(" +x = " + +x);
console.log(" ~~x = " + ~~x);
}
ডিবাগ কনসোল:
123
Number(x) = 123
parseInt(x, 10) = 123
parseFloat(x) = 123
+x = 123
~~x = 123
undefined
Number(x) = NaN
parseInt(x, 10) = NaN
parseFloat(x) = NaN
+x = NaN
~~x = 0
null
Number(x) = 0
parseInt(x, 10) = NaN
parseFloat(x) = NaN
+x = 0
~~x = 0
"not a number"
Number(x) = NaN
parseInt(x, 10) = NaN
parseFloat(x) = NaN
+x = NaN
~~x = 0
123.45
Number(x) = 123.45
parseInt(x, 10) = 123
parseFloat(x) = 123.45
+x = 123.45
~~x = 123
1234 error
Number(x) = NaN
parseInt(x, 10) = 1234
parseFloat(x) = 1234
+x = NaN
~~x = 0
2147483648
Number(x) = 2147483648
parseInt(x, 10) = 2147483648
parseFloat(x) = 2147483648
+x = 2147483648
~~x = -2147483648
4999999999
Number(x) = 4999999999
parseInt(x, 10) = 4999999999
parseFloat(x) = 4999999999
+x = 4999999999
~~x = 705032703
~~x"আরো" ক্ষেত্রে, যেখানে অন্যদের প্রায়ই ফলে একটি সংখ্যা সংস্করণ ফলাফল undefined, কিন্তু এটা অবৈধ ইনপুট জন্য ব্যর্থ হয় (যেমন এটা ফিরে আসবে 0যদি স্ট্রিং অ সংখ্যা অক্ষর রয়েছে পর একটি বৈধ নম্বর)।
টলমলানি
দয়া করে নোট করুন: পূর্ণসংখ্যার ওভারফ্লো এবং / বা বিট কাটাটি ঘটতে পারে ~~ তবে অন্যান্য রূপান্তরগুলি নয়। যদিও এ জাতীয় বৃহত মানগুলিতে প্রবেশ করা অস্বাভাবিক, তবে আপনার এটি সম্পর্কে সচেতন হওয়া দরকার। অনেক বড় মান অন্তর্ভুক্ত করতে উদাহরণ আপডেট হয়েছে।
কিছু নিখুঁত পরীক্ষাগুলি নির্দেশ করে যে স্ট্যান্ডার্ড parseIntএবং parseFloatফাংশনগুলি আসলে দ্রুততম বিকল্পগুলি, সম্ভবত ব্রাউজারগুলি দ্বারা উচ্চতর অনুকূলিতকরণ করা হয় তবে সমস্ত অপশন পর্যাপ্ত পর্যাপ্ত হওয়ায় এটি আপনার প্রয়োজনের উপর নির্ভর করে : http://jsperf.com/best-of-string-to -number-রূপান্তর / 37
এই সমস্ত পারফ টেস্টগুলি কতটা ধীর হতে পার্সেন্ট / পার্সফ্লোয়েট শো হিসাবে কনফিগার করা যায় তার উপর নির্ভর করে।
আমার তত্ত্বটি হ'ল:
- মিথ্যাচার
- ডার্ন লাইন
- পরিসংখ্যান
- জেএসপিফারফের ফলাফল :)