くりーむわーかー

プログラムとか。作ってて ・試しててハマった事など。誰かのお役に立てば幸いかと。 その他、いろいろエトセトラ。。。

JavaScript

Javascript Numberの挙動(変換誤差)

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

JavaScript if文の挙動まとめ

完全にメモ。

if(""): false
if(0): false
if(NaN): false
if(null): false
if(undefined): false
if(x): true
if(1): true
if([]): true
if([1]): true
if([].length): false
if([1].length): true
問合せ