大きすぎて`number`型で表現できない数を扱う[[データ型 (JavaScript)|データ型]] `Number.MAX_SAFE_INTEGER`を超えた値は正確に演算を行えない。 ```ts const big = Number.MAX_SAFE_INTEGER // ^? const big: number for (let i = 0; i < 10; i++) { console.log(big + i) } // 演算結果が正確ではない // 9007199254740991 // 9007199254740992 // 9007199254740992 // 9007199254740994 // 9007199254740996 // 9007199254740996 // 9007199254740996 // 9007199254740998 // 9007199254741000 // 9007199254741000 ``` <button class="playground"><a href="https://www.typescriptlang.org/play?ssl=2&ssc=1&pln=2&pc=9#code/MYewdgzgLgBARgSwOYwLwwHIFcC2cCmATgHQCyAggBoD6AyuQGICi1AkhgCpMDiTASgCgA9EJhiYAPQD8AgQDMQhGAAoANvlgI0MAAwBuGFoA8MAIz7DAaksBKGAG8B4mKEgh1xVSCTLEKS4Y2AgC+siIwgCj2gOnegAq+gDnmgDIMgMbWgF0egOYMgPYMgFYMgCIMwqIAnDo6AOymBQUATACsACwltToVpjD5MEWl5VV1DU1VreEdZRU19Y0jA4XFw91jfbWT7dNdo70VAGyLQys94wWbbdsju30Hg8vHcxUAHFsXsw3mxXedl4-FOq1AA">Playground</a></button> [[BigInt (JavaScript)|BigInt]]を使うことで`Number.MAX_SAFE_INTEGER`を超えた値でも正しく演算できる。 ```ts // BigIntで囲むとBigIntになる (newは不要) const big = BigInt(Number.MAX_SAFE_INTEGER) // ^? const big: bigint // nのsuffixで数値リテラルがBigIntになる. BigInt(0)でも同じ for (let i = 0n; i < 10; i++) { console.log(big + i) } // 正確な演算結果 // 9007199254740991 // 9007199254740992 // 9007199254740993 // 9007199254740994 // 9007199254740995 // 9007199254740996 // 9007199254740997 // 9007199254740998 // 9007199254740999 // 9007199254741000 ``` <button class="playground"><a href="https://www.typescriptlang.org/play?target=7&ssl=3&ssc=1&pln=3&pc=10#code/PTAECEEsHMEkDsAuhzBkE9qgAhkBYMU5MNYMgVgyDRDKABTwCmA7oPYMgsHKCBkQJQBQAxgPbwDOioARjFABeCDASJSAOQCuAW34UATgDoAsgEEAGgH0AyhoBiAUR2wpAFWMBxYwCVWIUM+cA9APwsWT+IDsGbjIAZoGQAB7IgA6mgCQKgFcMgGMMgJcMgNcMgDIMOBKERCpiuJIADEzIgEEMgDAqgBoMLIEcSmQANhR8kCKgefAA3KBNADygAIx5HZAA1ENMoADeLC6gnDwc9Sq1HNCkgtCgQ52sAL5eToDG1oBdHgSAKPaA6d6ACr6AOebeYACceXkA7L13dwBMAKwALE-feW9eqBbqAHs9Xh8fn8AR9gU4wS83l9fv83gBmOH3R6IyEomHfTGg7EQ5HQt6fQkIklQ1F3ABslOJSJpMKejPBzLxbwAHOycaTaXc+dSUf1HsCgA">Playground</a></button>