Number.isSafeInteger()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015å¹´9æ.
Number.isSafeInteger() ã¯éçã¡ã½ããã§ãæå®ãããå¤ãå®å
¨ãªæ´æ°ã§ãããã©ãããå¤å®ãã¾ãã
試ãã¦ã¿ã¾ããã
function warn(x) {
if (Number.isSafeInteger(x)) {
return "Precision safe.";
}
return "Precision may be lost!";
}
console.log(warn(Math.pow(2, 53)));
// äºæ³ãããçµæ: "Precision may be lost!"
console.log(warn(Math.pow(2, 53) - 1));
// äºæ³ãããçµæ: "Precision safe."
æ§æ
Number.isSafeInteger(testValue)
弿°
testValue-
å®å ¨ãªæ´æ°ãã©ããããã¹ãããå¤ã§ãã
è¿å¤
è«çå¤ã§ãä¸ããããæ°å¤ãå®å
¨ãªæ´æ°ã§ããæ°å¤ã§ããã° true ãè¿ãã¾ããããã§ãªããã° false ã§ãã
解説
å®å ¨ãªæ´æ°ã¨ã¯ã -(253 - 1) ãã 253 - 1 ã¾ã§ã®ãã¹ã¦ã®æ´æ°ã§ããã両端ãå«ã¿ã¾ã (±9,007,199,254,740,991)ãå®å ¨ãªæ´æ°ã¯æ¬¡ã®ãããªãã®ã§ãã
- æ£ç¢ºã« IEEE-754 å精度æ°ã¨ãã¦è¡¨ç¾ãããã¨ãã§ãã
- ãã® IEEE-754 表ç¾ã¯ãä»ã®æ´æ°ã IEEE-754 ã®è¡¨ç¾ã«é©åããããã«ã丸ããçµæã«ã¯ãªããªã
ä¾ãã°ã253 - 1 ã¯å®å ¨ãªæ´æ°ã§ããæ£ç¢ºã«è¡¨ç¾ãããã¨ãã§ããä»ã®æ´æ°ã¯ãã©ã® IEEE-754 丸ãã¢ã¼ãã®ä¸ã§ä¸¸ãããã®ã«ããªã£ã¦ãã¾ãããå¯¾ç §çã«ã253 ã¯å®å ¨ãªæ´æ°ã§ã¯ããã¾ããããã㯠IEEE-754 ã§æ£ç¢ºã«è¡¨ç¾ã§ãã¾ãããæ´æ°å¤ 253 + 1 ã¯ç´æ¥ IEEE-754 ã§ã¯è¡¨ç¾ã§ããã忍äºå ¥ãåãæ¨ã¦ã®ä¸¸ãã«ãã£ã¦ 253 ã«ãªãããã§ãã
å®å ¨ãªç²¾åº¦ã§ ~9 åå ãã大ããå¤ãå°ããå¤ãæ±ãã«ã¯ãä»»æç²¾åº¦æ¼ç®ã©ã¤ãã©ãªã¼ã使ç¨ããå¿ è¦ãããã¾ããæ°å¤ã®æµ®åå°æ°ç¹è¡¨ç¾ã®è©³ç´°ã«ã¤ãã¦ã¯ã What Every Programmer Needs to Know about Floating Point Arithmetic ãåç §ãã¦ãã ãããs
å·¨å¤§ãªæ´æ°å¤ã«ã¤ãã¦ã¯ã BigInt åã使ç¨ãããã¨ãæ¤è¨ãã¦ãã ããã
ä¾
>isSafeInteger() ã®ä½¿ç¨
Number.isSafeInteger(3); // true
Number.isSafeInteger(2 ** 53); // false
Number.isSafeInteger(2 ** 53 - 1); // true
Number.isSafeInteger(NaN); // false
Number.isSafeInteger(Infinity); // false
Number.isSafeInteger("3"); // false
Number.isSafeInteger(3.1); // false
Number.isSafeInteger(3.0); // true
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-number.issafeinteger> |