web-dev-qa-db-ja.com

JavaScriptは倍精度浮動小数点数の精度を持っていますか?

奇妙な質問ですが、JavaScriptにはシングルフロートではなくダブルフロートで機能する能力がありますか? (64ビット浮動小数点と32ビット浮動小数点。)

32
Travis

JavaScriptの数値はすべて64ビットの浮動小数点数です。

参照:

http://www.hunlock.com/blogs/The_Complete_Javascript_Number_Reference

http://www.crockford.com/javascript/survey.html

35
Moin Zaman

ECMA-262仕様(ECMAScriptはJavascriptの仕様です)によると、セクション8.5:

数値型は正確に18437736874454810627(つまり、264−253+3)値、2進浮動小数点演算のIEEE標準で指定されている倍精度64ビット形式のIEEE 754値を表す

出典: http://www.ecma-international.org/publications/files/ecma-st/ECMA-262.pdf (PDF)

32

JavaScriptタイプでは、numberIEEE 754標準をサポートする64ビットの浮動小数点数であり、doubleCでは、以下のコマンドで32ビットの型付き配列を作成し、対応するバッファーをバインドすることで各コンポーネントの各バイトを制御できます。

let a = new Float32Array(length);
let b = new Float64Array(length);

ただし、IE9ではサポートされていないことに注意してください ブラウザの互換性 テーブル。

long doubleのような拡張プレシジョンが必要な場合は、 double.js または decimal.js を使用できます=ライブラリ。

0
Pavel Melnikov