問題タブ [ieee-754]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
12 に答える
8968 参照

c++ - c/c++ 浮動小数点型の名前が変な名前なのはなぜですか?

C++ には、float、double、long double の 3 つの浮動小数点型があります。コードで浮動小数点を使用することはめったにありませんが、使用すると、次のような無害な行で常に警告が表示されます

問題は、リテラル 4.0 が float ではなく double であることです。これはイライラします。

整数型には、short int、int、long int がありますが、これは非常に簡単です。なぜCにはショートフロート、フロート、ロングフロートがないのですか? では、「ダブル」は一体どこから来たのでしょうか。

編集:浮動小数点型間の関係は整数の関係に似ているようです。double は少なくとも float と同じ大きさでなければならず、long double は少なくとも double と同じ大きさでなければなりません。精度/範囲のその他の保証は行われません。

0 投票する
3 に答える
1121 参照

c - floor() は正確に表現可能なものを返しますか?

C89 では、floor() は double を返します。以下は動作することが保証されていますか?

私の懸念は、floor の結果が IEEE 754 で正確に表現できない可能性があることです。したがって、d は 2.99999 のようになり、x は最終的に 2 になります。

この質問に対する答えが「はい」であるためには、int の範囲内のすべての整数が double として正確に表現可能でなければならず、floor は常にその正確に表現された値を返さなければなりません。

0 投票する
13 に答える
42417 参照

c++ - 浮動小数点からバイナリ値へ (C++)

2.25125 のような C++ の浮動小数点数と、浮動小数点数をメモリ (IEEE 754) に格納するために使用されるバイナリ値で満たされた int 配列を取得したいと考えています。

したがって、数値を取得して、浮動小数点数のバイナリ値を持つ int num[16] 配列になる可能性があります。num[0] は 1 num[1] は 1 num[2] は 0 num[3 ]は1などになります...

int を配列に入れるのは難しくありません。float のバイナリ値を取得するプロセスだけで行き詰っています。float 変数であるメモリ内のバイナリを読み取ることができますか? そうでない場合、どうすれば C++ でこれを行うことができますか?

編集: この方法で比較を行う理由は、C++ でビット単位の操作を行う方法を学びたいからです。

0 投票する
5 に答える
7064 参照

floating-point - 80 ビットの拡張精度データ型のアプリケーションと利点は何ですか?

ええ、私は80-bitと言うつもりでした。あれはタイプミスじゃない…

私の浮動小数点変数の経験では、single (32 ビット)、double (64 ビット)、long double (96 ビットまたは 128 ビットと呼ばれる) などの 4 バイトの倍数が常に関係していました。そのため、 AIFF (Audio Interchange File Format) ファイルを読み書きするコードを作成しているときに、 80 ビットの拡張精度データ型に遭遇したとき、少し混乱しました。サンプリングを格納するために拡張精度変数が選択されました。オーディオトラックのレート。

ウィキペディアをざっと見てみると、 IEEE 754-1985 標準の概要に 80 ビット形式の簡単な言及と共に上記のリンクが見つかりました(ただし、IEEE 754-2008 標準の概要にはありません)。特定のアーキテクチャでは、「extended」と「long double」は同義語のようです。

私が遭遇していないことの 1 つは、拡張精度データ型 (もちろん、AIFF ファイルのサンプリング レートを除く) を利用する特定のアプリケーションです。これにより、私は疑問に思いました:

  • 一部のプログラミングアプリケーションで拡張精度が必要/有益である状況に遭遇した人はいますか?
  • 明らかな「double よりも精度が高いが、long double のほとんどの実装よりもバイト数が少ない」以外に、80 ビット浮動小数点数の利点は何ですか?
  • その適用性は薄れていますか?
0 投票する
3 に答える
1592 参照

ieee-754 - IEEE 754 に対応する言語は?

私は 1 週間かけてこのテーマをいじりましたが、IEEE 754 仕様を正しく理解できる言語は見つかりませんでした。

GCC でさえ、関連する C99 の部分を尊重しません (これは FENV_ACCESS プラグマを無視します。私の作業例は運が良かったと言われています)。

ライブラリ関数で仕様を尊重することは (AFAIK) 不可能です。フラグや丸めを使用するときに一般的な最適化が禁止されているため、言語からのサポートが必要です。

ここに私の本当の質問があります: 丸めモード、例外フラグ、微積分にアクセスできる言語はありますか (C/C++ または未加工のアセンブリを除く)。

0 投票する
7 に答える
14651 参照

c++ - C++ double が 64 ビットであることを確認する

私の C++ プログラムでは、外部バイト シーケンスから 64 ビット float を取得する必要があります。コンパイル時に double が 64 ビットであることを確認する方法はありますか? 代わりにデータを保存するために使用する必要がある他のタイプはありますか?

編集: これを読んでいて、実際にIEEE 754 形式でのストレージを確保する方法を探している場合は、以下の Adam Rosenfield の回答をご覧ください。

0 投票する
4 に答える
7517 参照

c - double での整数の表現

double (適切な仮数/指数バランスを持つ、指定されたバイト数の) は、そのバイト数の半分の符号なし整数の範囲を常に完全に正確に保持できますか?

たとえば、8 バイトの double は、4 バイトの unsigned int の数値の範囲を完全に正確に保持できますか?

要するに、2 バイトの float が 1 バイトの unsigned int の範囲を保持できるかどうかです。

もちろん、1 バイトの unsigned int は 0 -> 255 になります。

0 投票する
2 に答える
6393 参照

perl - Perl で 4 文字を 32 ビット IEEE-754 float に変換するにはどうすればよいですか?

関数が 4 つの 8 ビット文字を受け取り、結果の 32 ビット IEEE-754 float を通常の Perl 数値に変換する必要があるプロジェクトがあります。以下の作業コードよりも高速な方法があるはずですが、機能するより単純な pack 関数を見つけることができませんでした。

うまくいきませんが、近いようです:

作品:

誰でも良い方法がありますか?

0 投票する
7 に答える
87409 参照

floating-point - 16 ビット、32 ビット、および 64 ビットの IEEE-754 システムで表現できる数値の範囲は?

浮動小数点数の表現方法については少し知っていますが、十分ではありません。

一般的な質問は次のとおりです。

特定の精度 (私の目的では、基数 10 の正確な小数点以下の桁数) で、16 ビット、32 ビット、および 64 ビットの IEEE-754 システムで表現できる数値の範囲は?

具体的には、+/-0.5 (一の位) または +/- 0.0005 (千の位) の精度の 16 ビットおよび 32 ビットの数値の範囲にのみ関心があります。