Numberで数値変換する時にちょっとやられたので記載。

やられたというか当たり前だろという話ですが。

「9999999999999999」をNumerで変換すると「10000000000000000」に丸められる。

sample-number

Number | MDN

次の例は、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桁くらいで制限かけておかないとか。用途次第ですが。