問題タブ [floating-point]

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 投票する
3 に答える
29237 参照

c# - C#でdoubleから仮数と指数を抽出する

c# (または一般に .NET) で double から仮数と指数を取得する簡単な方法はありますか?

Google を使用してこの例を見つけましたが、それがどれほど堅牢かはわかりません。フレームワークの将来のバージョンなどで、二重の変更のバイナリ表現はありますか?

私が見つけた他の代替手段は、double の代わりに System.Decimal を使用し、Decimal.GetBits()メソッドを使用してそれらを抽出することでした。

助言がありますか?

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

algorithm - 多くの浮動小数点数を合計するにはどうすればよいですか?

あらゆる種類のサイズの浮動小数点数の大きな配列があるとします。誤差が最も少なく、合計を計算する最も正しい方法は何ですか? たとえば、配列が次のようになっている場合:

次のような単純なループで左から右に合計します

小さい数値を合計すると、精度のしきい値を下回る可能性があるため、エラーがどんどん大きくなります。私の知る限り、最良の方法は、配列を並べ替えて、数値を最小から最大に加算することですが、もっと良い方法 (より速く、より正確) があるかどうか疑問に思っています。

編集:答えてくれてありがとう、Javaでdouble値を完全に合計する作業コードができました。これは、勝利した回答の Python 投稿からのストレート ポートです。ソリューションは、すべての単体テストに合格します。(これのより長いが最適化されたバージョンは、ここで利用可能ですSummarizer.java )

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

language-agnostic - floatまたはdoubleのバイナリ表現を表示するにはどうすればよいですか?

浮動小数点数の2進数(または16進数)表現を表示したいと思います。私は(ここの方法を使用して)手動で変換する方法を知っていますが、同じことを行うコードサンプルを見ることに興味があります。

私はC++とJavaのソリューションに特に興味がありますが、どの言語でも特に簡単にできるのではないかと思うので、この言語に依存しないようにしています。他の言語でいくつかの解決策を見たいです。

編集:私はC、C ++、C#、およびJavaを十分にカバーしています。リストに追加したい代替言語の達人はいますか?

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 に答える
27785 参照

python - 浮動小数点の制限

私のコード:

a浮動小数点値として表示したかったのです。

は文字列なのでa、試しました:

私が得た結果は次のとおりです。

この問題の解決策が欲しいです。お願いします、助けてください。

私はこのチュートリアルに従っていました。

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

c# - フロートを使用する場合

何年も前に、フロートの精度の問題について難しい方法を学んだので、フロートの使用をやめました。ただし、フロートを使用するコードに出くわすと、一部の計算が不正確になることがわかっているため、うんざりします。

では、いつフロートを使用するのが適切なのでしょうか?

編集: 情報として、数値の精度が重要でないプログラムに出くわしたとは思いません。しかし、私は例を聞くことに興味があります。

0 投票する
6 に答える
42107 参照

c++ - C++ で無限値と不定値をチェックするにはどうすればよいですか?

私のプログラムでは、通常、値をゼロで割ったときに無限大が発生します。ゼロをゼロで割ると不定になります。C++ で無限値と不定値をチェックするにはどうすればよいですか?

C++ では、無限大は 1.#INF で表されます。不確定は -1.#IND で表されます。問題は、変数が無限か不確定かをテストする方法です。無限のチェックは比較的簡単です。特定の C++ で無限の定義を見つけることができます。私の場合 (VS2003) では、std::numeric_limits::infinity() です。それを使用するには、「制限」を含める必要があります。この無限値を変数に代入し、その値をある値と比較して、その値が無限かどうかを確認できます。

不確定値を他の値と比較することはできないため、不確定は少し注意が必要です。どの比較も false を返します。このプロパティを使用して、それ自体と比較することで不確定値を検出できます。aVal という double 変数があるとします。通常、aVal != aVal は false を返します。ただし、値が不定の場合、aIndVal != aIndVal は true を返します。この奇妙な状況は、無限値には存在しません。つまり、aInfVal != aInfVal は常に false を返します。

不定値と無限値をチェックするために使用できる 2 つの関数を次に示します。

これらのチェックのためのより良い方法はありますか?何か不足していますか?

0 投票する
16 に答える
23188 参照

c++ - 浮動小数点から整数への変換を高速化するには?

私たちのプロジェクトでは、浮動小数点から整数への変換を大量に行っています。基本的に、このようなもの

変換を実行するデフォルトの C 関数は、かなり時間がかかります。

プロセスを少しスピードアップできる回避策 (おそらく手動で調整された関数) はありますか? 精度はあまり気にしません。

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

linux - Linux デバイス ドライバーで浮動小数点を使用するためのコーディング規則は何ですか?

これはこの質問に関連して います。

私は Linux デバイス ドライバーやカーネル モジュールの専門家ではありませんが、Rubini & Corbet による「Linux Device Drivers」[O'Reilly] や多数のオンライン ソースを読んでいますが、見つけることができませんでした。この特定の問題についてはまだ何もありません。

カーネルまたはドライバー モジュールが浮動小数点レジスタを使用できるのはいつですか?
もしそうなら、誰がその内容を保存して復元する責任がありますか?
(x86-64 アーキテクチャを想定)

私の理解が正しければ、KM が実行されているときは常に、何らかのアプリケーション スレッドからプリエンプトされたハードウェア コンテキスト (またはハードウェア スレッドまたはレジスタ セット - 任意の名前) を使用しています。KM を c で記述した場合、コンパイラは汎用レジスタが適切に保存および復元されることを (アプリケーションと同様に) 正しく保証しますが、浮動小数点レジスタではそれが自動的に行われません。さらに言えば、多くの KM は、プロセッサに浮動小数点機能があると想定することさえできません。

浮動小数点を使用したい KM は、浮動小数点の状態を慎重に保存して復元する必要があると推測するのは正しいですか? これを行うための標準のカーネル関数はありますか?

このためのコーディング規約はどこかに明記されていますか?
それらは SMP 非 SMP ドライバーとは異なりますか?
古い非プリエンプティブ カーネルと新しいプリエンプティブ カーネルで違いはありますか?

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

java - MostEqual2sComplement または BigDecimal スケーリング

2 つの浮動小数点値を比較するためのより良いアプローチは何でしょうか? Epsilon または Big Decimal とスケーリングの比較を使用しますか?

たとえば、データの範囲は 0.00 ~ 49,999.99?