আমার কাছে জাভাস্ক্রিপ্ট গণনার একটি সিরিজ রয়েছে যা ব্যবহারকারীর পছন্দগুলির উপর নির্ভর করে (কেবলমাত্র আইই এর অধীনে) অনন্ততা দেখায়।
কীভাবে কেউ শব্দটি Infinity
উপস্থিত হওয়া বন্ধ করে এবং উদাহরণস্বরূপ, 0.0
পরিবর্তে প্রদর্শন করবে ?
উত্তর:
if (result == Number.POSITIVE_INFINITY || result == Number.NEGATIVE_INFINITY)
{
// ...
}
আপনি isFinite
কীভাবে চিকিত্সা করতে চান তার উপর নির্ভর করে আপনি সম্ভবত ফাংশনটি ব্যবহার করতে পারেন NaN
। isFinite
ফেরৎ false
আপনার নম্বর হলে POSITIVE_INFINITY
, NEGATIVE_INFINITY
বা NaN
।
if (isFinite(result))
{
// ...
}
Infinity
সম্পত্তি কেবল পঠনযোগ্য নয় যার অর্থ এটি পুনরায় সংজ্ঞায়িত করা যায়: উদাহরণস্বরূপ, "সত্য"var x = 42; Infinity = 42; alert(x === Infinity);
প্রদর্শন করে । (স্বীকার করে নিই যে এটি একটি অস্পষ্ট মামলা, এবং যে কেউ পুনরায় সংজ্ঞা দেওয়ার সিদ্ধান্ত নেয় , তার উচিত বিজোড় বিষয়গুলির প্রত্যাশা করা উচিত))Infinity
NaN
Number.(POSITIVE|NEGATIVE)_INFINITY
করা হয় পারেন শুধুমাত্র পাঠযোগ্য নয়, Infinity
হয় শুধুমাত্র পাঠযোগ্য কঠোর মোডে। এছাড়াও, -?1/0
আমি আপনার কাছে যে বিষয়টি উপস্থাপন করেছি তা সম্পর্কে কী ? যাইহোক, আপনার isFinite
পরিবর্তে প্রায় সর্বদা ব্যবহার করা উচিত ।
Number.POSITIVE_INFINITY
এবং Number.NEGATIVE_INFINITY
করছে শুধুমাত্র পাঠযোগ্য (Chrome8, FF3.6 এবং IE8 উপর পরীক্ষা)। ব্যবহার দুর্দান্ত 1/0
কাজ করে তবে আপনি যে কোডটির জন্য পরীক্ষার চেষ্টা করছেন তা আপনার কোড রক্ষণাবেক্ষণকারীদের পক্ষে এতটা স্পষ্ট হবে না। আমি সম্মত হই যে ব্যবহার isFinite
করা প্রায়শই সর্বদা সর্বোত্তম উপায় - এজন্য আমি আমার উত্তরে এটি উল্লেখ করেছি - তবে কেবল ওপি সিদ্ধান্ত নিতে পারে যে এটি তাদের প্রয়োজনীয়তা পূরণ করে কিনা।
Object.defineProperty
এবং __defineGetter__
। Infinity
অন্যদিকে, হয় কঠোর মোডে অ কনফিগারযোগ্য।
একটি সাধারণ n === n+1
বা n === n/0
কাজ:
function isInfinite(n) {
return n === n/0;
}
সচেতন থাকুন যে দেশীয় isFinite()
সংখ্যাগুলি সংখ্যায় প্রবেশ করে। isFinite([])
এবং isFinite(null)
উভয় true
উদাহরণস্বরূপ।
n === n+1
2 ^ 53, অর্থাৎ 1e30 এর চেয়ে বড় সংখ্যার জন্য সত্যের মূল্যায়ন করে। ডিভিশন হ্যাক কাজ করে, এমনকি এনএএন এবং -ইনফিনিটির জন্যও। যাইহোক, লুকের উত্তরটি আপনাকে আরও পাঠযোগ্য কোড দেয়।
n+1
প্রতিনিধিত্ব করা যায় না এবং গোলাকার সাপেক্ষে। ভাল, এমনকি পূর্ণসংখ্যাগুলি গোলাকৃতির ত্রুটি দ্বারা প্রভাবিত হয়। বিটিডব্লু, আমি মনে করি না যে আপনার কোডটি "গণিত-প্রুফ", কেবল চেষ্টা করুন n === n/-0
। + /- ইনফ দিয়ে বাস্তবগুলি সমাপ্ত করার সময়, অন্তর্নিহিত শূন্য ক্রমটিকে ইতিবাচক বলে ধরে না নিলে আপনার সীমাটি সঠিকভাবে সংজ্ঞায়িত হবে না।
ইন ES6
, Number.isFinite()
পদ্ধতিটি নির্ধারণ করে যে পাস করা মান একটি সীমাবদ্ধ নম্বর।
Number.isFinite(Infinity); // false
Number.isFinite(NaN); // false
Number.isFinite(-Infinity); // false
Number.isFinite(0); // true
Number.isFinite(2e64); // true
আমি লোড্যাশকে বিভিন্ন ধরণের প্রতিরক্ষামূলক কোডিং কারণে পাঠযোগ্যতার জন্য ব্যবহার করতে পছন্দ করি । ES6 Number.isFinite
দুর্দান্ত এবং অ-সংখ্যাসূচক মানগুলির সাথে সমস্যা নেই তবে ES6 যদি সম্ভব না হয় তবে আপনার কাছে ইতিমধ্যে লোটাস রয়েছে, বা ব্রিফার কোড চান: _.আইসফিনেন্ট
_.isFinite(Infinity); // false
_.isFinite(NaN); // false
_.isFinite(-Infinity); // false
_.isFinite(null); // false
_.isFinite(3); // true
_.isFinite('3'); // true
আমি একটি দৃশ্যকল্প আমাকে যদি মান কিনা চেক করা প্রয়োজন গাড়ীতে আঘাত করেছি NaN
বা Infinity
টাইপ কিন্তু বৈধ ফলাফল হিসাবে স্ট্রিং পাস। যেহেতু অনেকগুলি পাঠ্য স্ট্রিং মিথ্যা-ইতিবাচক উত্পন্ন করবে NaN
, আমি এ থেকে বিরত থাকার একটি সহজ সমাধান করেছি made
const testInput = input => input + "" === "NaN" || input + "" === "Infinity";
উপরের কোড মানগুলিকে স্ট্রিংয়ে রূপান্তরিত করে এবং সেগুলি NaN বা ইনফিনিটির সমানভাবে সমান কিনা তা পরীক্ষা করে (আপনার নেতিবাচক অনন্ততার জন্য অন্য একটি মামলা যুক্ত করতে হবে)।
সুতরাং:
testInput(1/0); // true
testInput(parseInt("String")); // true
testInput("String"); // false
NaN
toString()
পরিবর্তে ব্যবহার করি তবে কি আপনাকে সুখী করবে ? নিচে নির্দ্বিধায় বা রাষ্ট্রের কারণগুলি কীভাবে এটি অসঙ্গতিপূর্ণ ফলাফল পেতে পারে বা ঠিক কেন এই পদ্ধতির প্রস্তাব দেওয়া হয়নি তা নির্দ্বিধায় মনে করুন। এখনও অবধি, আমি এখনও মনে করি এটি যে কারও উত্তর সন্ধান করছে তার জন্য এটি একটি বিকল্প যুক্ত করেছে এবং এটি বিপজ্জনক, অস্থির ইত্যাদি কারণগুলির কোনও ठोस কারণ নেই etc.
আপনি উইন্ডোতে আইসফিনিট ব্যবহার করতে পারেন isFinite(123)
:
আপনি যেমন একটি ফাংশন লিখতে পারেন:
function isInfinite(num) {
return !isFinite(num);
}
এবং ব্যবহার করুন:
isInfinite(null); //false
isInfinite(1); //false
isInfinite(0); //false
isInfinite(0.00); //false
isInfinite(NaN); //true
isInfinite(-1.797693134862316E+308); //true
isInfinite(Infinity); //true
isInfinite(-Infinity); //true
isInfinite(+Infinity); //true
isInfinite(undefined); //true
আপনি Number.isFinit
যেটি ই সংখ্যাটি খুব বেশি কিনা তা যাচাই করতে পারেন undefined
এবং যাচাইকরণ এবং null
ইত্যাদির জন্য আরও সঠিক ...
অথবা আপনি এটির মতো পলিফিল করতে পারেন:
Number.isFinite = Number.isFinite || function(value) {
return typeof value === 'number' && isFinite(value);
}
Number.(POSITIVE|NEGATIVE)_INFINITY
পরিবর্তে-?Infinity
বা কেন ব্যবহার করবেন-?1/0
?