2017-08-29 14 views
0

Number.MAX_SAFE_INTEGERのような最大安全浮動小数点数はありますか?Node.jsの最大安全浮動小数点数のNode.jsで

私はそれから0.13を減算するために使用できる(おおよその)数を見つけるために少し実験を持っていた:

console.log(Math.floor(Number.MAX_SAFE_INTEGER)); // 9007199254740991 
console.log(Math.floor(Number.MAX_SAFE_INTEGER)-0.13); // 9007199254740991 

console.log(Math.floor(Number.MAX_SAFE_INTEGER/2)); // 4503599627370495 
console.log(Math.floor(Number.MAX_SAFE_INTEGER/2)-0.13); // 4503599627370495 

console.log(Math.floor(Number.MAX_SAFE_INTEGER/4)); // 2251799813685247 
console.log(Math.floor(Number.MAX_SAFE_INTEGER/4)-0.13); // 2251799813685246.8 

console.log(Math.floor(Number.MAX_SAFE_INTEGER/64)); // 140737488355327 
console.log(Math.floor(Number.MAX_SAFE_INTEGER/64)-0.13); // 140737488355326.88 

console.log(Math.floor(Number.MAX_SAFE_INTEGER/128)); // 70368744177663 
console.log(Math.floor(Number.MAX_SAFE_INTEGER/128)-0.13); // 70368744177662.87 

私の推測では、目標精度が増加すると、最大値が減少することです。

+0

あなたはいつもの仕様に相談することができます。この質問の入力よりも時間がかかりそうです。 – Pointy

+0

「安全」とは何かを説明するのにも役立ちます。整数値の場合、それはかなり明白ですが、実数の場合はそうではありません。 – Pointy

答えて

1

アップデート:この質問についての私の理解では、次のとおりです。最大の浮動数が0の間、すべての浮動数の操作を安全に配信することができることが、あります。それが問題である場合は

、短い答えは:はありません

実際には、すべてのプログラミング言語にはMAX_SAFE_FLOATありません(もしあれば非常に喜んでいるでしょう)。プログラミング言語の数値は、0または1ビットで格納されます。ストレージ(32ビット、64ビットなど)に制限がある限り、表現できる数値は有限です。しかし、浮動小数点数は無限大です。

を表現する必要がありますどのように多くの数字、00.000000001間の浮動数を考えてみましょうか?無限。コンピュータストアを無限の可能性を正確にすることは不可能です。そのため、決してMAX_SAFE_FLOATは存在しません。

p.s. JavaScriptでは、すべての数値は64​​ビットの倍精度浮動小数点数です。浮動小数点数はありません。 JavaScriptのinterger-number

+1

これは間違っています。表現可能な浮動小数点数の数は間違いなく**無限ではありません**。 64ビットしか関与していません。どうすれば無限になるのだろうか? – Pointy

+0

@Pointy表現可能な浮動小数点数を表すのではなく、浮動小数点数を正確に表現する必要があります。 – shaochuancs

+1

まだ間違っています。 – Pointy

0

あなたはNumber.MAX_VALUENumber.MIN_VALUEを探しています。

Number.MAX_VALUEは、1.7976931348623157e+308であり、Number.MIN_VALUEは、5e-324である。

+0

OPは最大の「安全な」浮動番号を尋ねますのでご注意ください。私は彼/彼女が欲しいと思うのは、Number.MAX_SAFE_INTEGERとNumber.MIN_SAFE_INTEGER – shaochuancs

+0

@ shaochuancsの間の範囲のような安全な範囲ですが、実数の表現は決して*決して「安全」ではないので実際には意味をなさない整数表現は「安全」と呼ぶことができる。 – Pointy

+0

はい、「安全な」浮動小数点数を求めるのは意味がありません。しかし、5 "0.13"を引く操作を見てください、OPは "0.13を引く"はまだ正しい結果を与える最大の安全な番号を見つけようとしたようです。彼はまた、 "目標精度が上がるにつれて、最大値が減少する"と言いました。 "0.1312134543124321512を減算する"と、その最大安全数値が小さくなると推測されるようです。 – shaochuancs

関連する問題