Numberで数値変換する時にちょっとやられたので記載。
やられたというか当たり前だろという話ですが。
「9999999999999999」をNumerで変換すると「10000000000000000」に丸められる。
次の例は、Number オブジェクトで表現可能な最小の整数値と最大の整数値です (詳細は、ECMAScript 標準の 6.1.6 The Number Type の章を参照してください)。
const biggestInt = Number.MAX_SAFE_INTEGER // (2^53 - 1) => 9007199254740991
const smallestInt = Number.MIN_SAFE_INTEGER // -(2^53 - 1) => -9007199254740991
という事らしい。上記の値を超えると丸められる事がありますね。
「9007199254740993」⇒「9007199254740992」
「9007199254740994」⇒「9007199254740994」
「9007199254740995」⇒「9007199254740996」
「9007199254740996」⇒「9007199254740996」
「9007199254740997」⇒「9007199254740996」
「9007199254740998」⇒「9007199254740998」
「9007199254740999」⇒「9007199254741000」
15桁くらいで制限かけておかないとか。用途次第ですが。