2011-01-18 14 views
82

मेरे पास जावास्क्रिप्ट गणना की एक श्रृंखला है जो (केवल आईई के तहत) उपयोगकर्ता विकल्पों के आधार पर इन्फिनिटी दिखाती है।मैं कैसे जांचूं कि कोई संख्या अनंतता का मूल्यांकन करती है या नहीं?

कोई व्यक्ति Infinity शब्द को कैसे रोकता है और उदाहरण के लिए, 0.0 दिखाएं?

उत्तर

149
if (result == Number.POSITIVE_INFINITY || result == Number.NEGATIVE_INFINITY) 
{ 
    // ... 
} 

आप संभवतः, बजाय isFinite समारोह इस्तेमाल कर सकते हैं कि कैसे आप NaN का इलाज करना चाहते हैं पर निर्भर करता है। isFinitefalse देता है यदि आपका नंबर POSITIVE_INFINITY, NEGATIVE_INFINITY या NaN है।

if (isFinite(result)) 
{ 
    // ... 
} 
+1

बिल्कुल सही - धन्यवाद! होमर। –

+2

'- इन्फिनिटी' या '-? 1/0' के बजाय 'संख्या। (सकारात्मक | नकारात्मक) _INFINITY' का उपयोग क्यों करें? –

+3

@Eli: वैश्विक 'इन्फिनिटी' संपत्ति केवल पढ़ने के लिए नहीं है जिसका अर्थ है कि इसे फिर से परिभाषित किया जा सकता है: उदाहरण के लिए,' var x = 42; अनंत = 42; चेतावनी (x === अनंतता); 'प्रदर्शित करता है *" सत्य "*। (माना जाता है कि यह एक अस्पष्ट मामला है, और कोई भी जो 'इन्फिनिटी', 'NaN' आदि को फिर से परिभाषित करने का निर्णय लेता है, अजीब चीजें होने की उम्मीद करनी चाहिए।) – LukeH

9

एक साधारण n === n+1 या n === n/0 काम करता है:

function isInfinite(n) { 
    return n === n/0; 
} 

पता है कि देशी isFinite() नंबरों के लिए आदानों coerces रहें। उदाहरण के लिए isFinite([]) और isFinite(null)true दोनों हैं।

2

असल में एन === एन + 1 51 बिट से बड़ी संख्या के लिए काम करेगा, उदाहरण के लिए

1e16 + 1 === 1e16; // true 
1e16 === Infinity; // false 
+2

यह रायनवे के उत्तर पर एक टिप्पणी होनी चाहिए। – Gary

4

ES6 में, Number.isFinite() विधि निर्धारित करता है कि भेजे गए मान को एक सीमित संख्या है।

Number.isFinite(Infinity); // false 
Number.isFinite(NaN);  // false 
Number.isFinite(-Infinity); // false 

Number.isFinite(0);   // true 
Number.isFinite(2e64);  // true 
+0

[पहुंच योग्य] (https://www.w3schools.com/jsref/jsref_isfinite.asp) ECMAScript 1 से – MohaMad

संबंधित मुद्दे

 संबंधित मुद्दे