2011-01-18 20 views

Trả lời

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

Bạn có thể có thể sử dụng chức năng isFinite thay vào đó, tùy thuộc vào cách bạn muốn để điều trị NaN. isFinite trả lại false nếu số của bạn là POSITIVE_INFINITY, NEGATIVE_INFINITY hoặc NaN.

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

Hoàn hảo - cảm ơn! Homer. –

+2

Tại sao sử dụng 'Số. (TÍCH CỰC | NEGATIVE) _INFINITY' thay vì' -? Infinity' hoặc '-? 1/0'? –

+3

@Eli: Thuộc tính 'Infinity' toàn cục không chỉ đọc, nghĩa là nó có thể được định nghĩa lại: Ví dụ,' var x = 42; Infinity = 42; alert (x === Infinity); 'display *" true "*. (Phải thừa nhận rằng đó là một trường hợp ít người biết đến, và bất kỳ ai quyết định định nghĩa lại 'Infinity',' NaN' vv cũng nên mong đợi những điều kỳ lạ xảy ra.) – LukeH

9

Một đơn giản n === n+1 hoặc n === n/0 công trình:

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

Hãy nhận biết rằng mẹ đẻ isFinite() cưỡng ép đầu vào cho số. Ví dụ: isFinite([])isFinite(null) đều là true.

2

Thực tế, n === n + 1 sẽ hoạt động với số lớn hơn 51 bit, ví dụ:

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

Điều này sẽ là một bình luận về câu trả lời của ryanve. – Gary

4

Trong ES6, Phương pháp Number.isFinite() xác định xem giá trị thông qua là một số hữu hạn.

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

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

[Có thể truy cập] (https://www.w3schools.com/jsref/jsref_isfinite.asp) từ ECMAScript 1 – MohaMad

Các vấn đề liên quan