Number Methods

Number static methods and constants, plus global isNaN / isFinite

// ── Number constants ──────────────────────────────────────────────────────────
console.log(Number.MAX_SAFE_INTEGER)   // 9007199254740991
console.log(Number.MIN_SAFE_INTEGER)   // -9007199254740991

// ── Number.isInteger ──────────────────────────────────────────────────────────
console.log(Number.isInteger(42))      // 1
console.log(Number.isInteger(-5))      // 1
console.log(Number.isInteger(3.0))     // 1  (3.0 has no fractional part)
console.log(Number.isInteger(3.5))     // 0
console.log(Number.isInteger(0.0))     // 1

// ── Number.isFinite ───────────────────────────────────────────────────────────
console.log(Number.isFinite(42))                    // 1
console.log(Number.isFinite(3.14))                  // 1
console.log(Number.isFinite(Number.POSITIVE_INFINITY)) // 0
console.log(Number.isFinite(Number.NEGATIVE_INFINITY)) // 0
console.log(Number.isFinite(Number.NaN))            // 0

// ── Number.isNaN ──────────────────────────────────────────────────────────────
console.log(Number.isNaN(42))          // 0
console.log(Number.isNaN(3.14))        // 0
console.log(Number.isNaN(Number.NaN))  // 1

// ── Number.isSafeInteger ──────────────────────────────────────────────────────
console.log(Number.isSafeInteger(42))                       // 1
console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER))  // 1
console.log(Number.isSafeInteger(3.5))                      // 0

// ── Number.parseInt / Number.parseFloat ──────────────────────────────────────
console.log(Number.parseInt('42'))       // 42
console.log(Number.parseInt('FF', 16))   // 255
console.log(Number.parseFloat('3.14'))   // 3.14

// ── global isNaN / isFinite ───────────────────────────────────────────────────
console.log(isNaN(42))               // 0
console.log(isNaN(Number.NaN))       // 1
console.log(isFinite(100))           // 1
console.log(isFinite(Number.POSITIVE_INFINITY)) // 0

// ── type inference without annotation ────────────────────────────────────────
const big = Number.MAX_SAFE_INTEGER
console.log(big)                     // 9007199254740991

const eps = Number.EPSILON
console.log(Number.isFinite(eps))    // 1

// ── practical: clamp to safe range ───────────────────────────────────────────
function safeMul(a: number, b: number): number {
    const result = a * b
    if (Number.isSafeInteger(result)) {
        return result
    }
    return Number.MAX_SAFE_INTEGER
}
console.log(safeMul(1000, 1000))        // 1000000
console.log(safeMul(100000000, 100000000)) // 9007199254740991 (clamped)

// ── Number.prototype instance methods ─────────────────────────────────────────
console.log((3.14159).toFixed(2))       // 3.14
console.log((1).toPrecision(4))         // 1.000
console.log((0.0012345).toPrecision(2)) // 0.0012
console.log((1234).toExponential(2))    // 1.23e+03
console.log((255).toString(16))         // ff
console.log((255).toString(2))          // 11111111
console.log((-255).toString(16))        // -ff
console.log((42).toString())            // 42 (radix defaults to 10)
View source on GitHubexamples/basics/number_methods.ts