5

私はW3Schoolsでこれを読みました:

JavaScript のすべての数値は、64 ビット (8 バイト) の基数 10 の浮動小数点数として格納されます。

これはかなり奇妙に聞こえます。さて、それは間違っているか、IEEE 標準のように基数 2 を使用しない正当な理由があるはずです。

実際の JavaScript 定義を見つけようとしましたが、見つかりませんでした。V8 または WebKit のドキュメントのいずれかで、ウィキペディアで見つけた 2 つの JavaScript 実装のうち、私にとって最もなじみ深いもので、JavaScript Number 型がどのように格納されているかを見つけることができました。

では、JavaScript は base 10 を使用しますか? もしそうなら、なぜですか?私が思いついた唯一の理由は、整数と浮動小数点数を正確に格納できるようにしたい場合に、基数 10 を使用すると利点があるかもしれないということでしたが、基数 10 を使用するとどのように利点があるかわかりません。自分。

4

3 に答える 3

7

これは、World Wide Web Consortium (W3C)ではなく、Web 標準の権威ではない Web サイトである w3schools です。

Javascript の数値は、IEEE 標準に準拠した倍精度浮動小数点数です。

サイトは、すべての数値が 64 ビット浮動小数点数であるという部分を正しく取得しました。基数 10 は、数値表現に関して何もする必要がありません。これはおそらく、浮動小数点数が常に基数 10 を使用して解析およびフォーマットされるという事実から来ています。

于 2013-01-26T19:00:49.940 に答える
5

ECMA-262 標準 (ECMAScript 5.1)セクション 4.3.19によると、JavaScript の数値は次のとおりです。

倍精度 64 ビット バイナリ形式のIEEE 754値に対応するプリミティブ値。

したがって、基数 10 の浮動小数点数を使用する実装は、ECMA-262 準拠ではありません。

于 2013-01-26T19:07:47.583 に答える
4

JavaScript は、最近のほとんどの言語と同様にIEEE754を使用します。ベース10にはまったく保存されていません。

JavaScript の特異性は、数値型が 1 つしかないことです。これは倍精度浮動小数点数です。これには、整数を処理する場合、他の言語とは対照的に、多少制限があるという副作用があります。倍精度整数を格納することはできず、分数のサイズ (52 ビット) に収まるもののみを格納できます。

于 2013-01-26T18:59:51.297 に答える