問題タブ [double-precision]

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

matlab - 倍精度 - MS ビジュアル C++ 2005 対 Matlab

C++ でいくつかの数学的アルゴリズムを実装するために、MS Visual C++ 2005 を使用しています。私の C++ コードは、Matlab で生成された小数点以下 12 桁の精度 (866.333333333333 など) の 10K double データ型の入力値を取ります。次に、私のコードはいくつかの計算を行い、同じアルゴリズムが同じ入力値で実行されたときに、matlab 出力と同じになるはずの機械的エンティティの損傷値である結果を返します。

私の問題は、matlab が小数点以下 12 桁の精度で 10k の入力値を与えることですが、私の C++ コードでは小数点以下 15 桁になります。つまり、matlab の 866.333333333333 は、C++ では 866.33333333333303 として使用されます。これが IEEE754 浮動小数点表現であることはわかっています。しかし、入力でのこの非常に小さな変更により、C++ 出力と matlab 出力を比較すると、最終結果に測定可能な違いが生じます。奇妙に聞こえるかもしれませんが、これが観察とは何かということです。ここでコードを共有できればと思いますが、非常に機密です。誰かがこれを乗り越えるために私を助けてくれれば、本当に感謝しています。

前もって感謝します...!

0 投票する
1 に答える
816 参照

mysql - MySQLが正しいデータを取得しないのはなぜですか?

私はCodeIgniterのActiveRecordを使用しており、コードは次のとおりです。

var_dump私が得るとき$campaign_ledger

しかし、データが私のデータベースに入るとき、それbalance91.36800000000001何らかの理由でです。では、切断とは何ですか?

編集

に変更した後DECIMAL(10,4)も、出力として取得91.3680します。

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

c++ - c ++文字列は、印刷時に二重に短縮されています

この文字列操作は、省略形で double を出力しますが、その理由はわかりません。なぜこれが起こっているのですか?出力の最初の行のような完全な出力を取得するにはどうすればよいですか?

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

opencl - Radeon HD 4850およびOpenCL:cl_khr_fp64はこのビデオカードで動作しますか?

このビデオカード(Radeon HD 4850)は、AMD互換性テーブルに従ってOpenCL1.0にのみ準拠しています。doubleNタイプで集中的な財務計算を実行するには、ハードウェアが必要です(フロートはまったくありません!)。このカードテーブルによると、このカードはダブルタイプで動作することができます。今ではかなり魅力的な価格で購入する可能性があります。

回答者が、fp64拡張機能を備えたOpenCL用にこのカードを実際に使用した経験を持っていることを感謝します。もちろん、このカードに問題がある場合は、ここに2行入れてください。

私の英語をありがとう、そしてごめんなさい。

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

algorithm - 大きな整数の GCD アルゴリズム

高速 GCD 計算アルゴリズムに関する情報を探しています。特に、その実現に注目したい。

私にとって最も興味深いもの: - Lehmer GCD アルゴリズム - Accelerated GCD アルゴリズム - k-ary アルゴリズム - FFT を使用した Knuth-Schonhage。高速化された GCD アルゴリズムに関する情報はまったくありません。中程度の入力 (〜 1000 ビット) で最も効果的で高速な gcd 計算方法として言及されている記事をいくつか見ただけです。

理論的な観点からは、それらを理解するのは非常に難しいように見えます。リストからアルゴリズム\パーツを実現したコード(C ++で望ましい)を共有するか、これを行った経験を共有してください。また、情報、コメント、アドバイス、調べるべき場所を教えていただければ幸いです。大きな整数を扱うクラスがありますが、それを扱うメソッドがありません。確かに、Euclid と Binary gcd アルゴリズムを除いて、今のところ私には明らかです。問題ありません。私が最後に取得したい主なもの: 実現のコード lehmer gcd. (リストのほうが簡単です)

0 投票する
1 に答える
897 参照

java - java: 倍精度数を 10 進数に変換するにはどうすればよいですか

倍精度数値を decimal に変換したい。

たとえば、私は 23.43 を持っています。二重値は (matlab を使用して) : 174 71 255 122 20 110 55 64 になります。

そして、これが matlab での倍精度の計算です:

MATLAB は、倍精度の IEEE 標準 754 に従って double データ型を構築します。double として格納される値には、次の表に示すようにフォーマットされた 64 ビットが必要です。

ビットの使用

63 符号 (0 = 正、1 = 負)

1023 でバイアスされた 62 ~ 52 の指数

51 ~ 0 数値 1.f の分数 f

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

java - 倍精度の数値を10進数に変換しようとしています

倍精度の数値を10進数に変換しようとしています。たとえば、倍精度でバイトとしての数値22は次のとおりです。

今、私はこれらの値を再び22に変換しようとします:

しかし、結果は完全に間違っています:4.6688606E18 この数は何ですか?助けてください、私は完全に混乱しています!

倍精度のIEEE標準754に準拠:

doubleとして格納される値には、次の表に示すようにフォーマットされた64ビットが必要です。

63符号(0 =正、1 =負)

62から52の指数、1023でバイアス

数1の51から0の分数f

では、倍精度を数値に変換して22を再び取得するにはどうすればよいですか?これらの答えはすべて間違っています

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

c - C でより高い精度で数値を格納する

非常に高い精度(約10^-10)で数値を格納し、さらにそれらをパラメータ( create_bloomfilter ([yet to decide the type] falsePositivity, long expected_num_of_elem))で使用する必要があるプログラムを作成しています。
私が得ることができる最高の精度は、十分ではありませんdouble10^-6

cでより高い精度で数値を保存するにはどうすればよいですか?

0 投票する
1 に答える
2230 参照

java - Double.parseDouble()およびString.valueOf()の精度

次のステートメントは、以下をdouble除くすべての(Javaプリミティブ倍精度IEEE-754)に当てはまりNaNますか?

別の言い方をすれば、シリアル化された(String.valueOf()を使用して)double値を解析すると、常に正確な元のdoubleが生成されますか?

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

cuda - CURAND_STATUS_DOUBLE_PRECISION_REQUIREDは未定義です

CUDAプロジェクトのビルド中に、次のエラーが発生します。

cutil_inline_runtime.h(328): error: identifier "CURAND_STATUS_DOUBLE_PRECISION_REQUIRED" is undefined

それで私はグーグルを始めました。解決策が見つからなかったため(実際の問​​題も見つかりませんでした)、nVIDIA CURANDガイドpdfからダウンロードして、読み始めました。そのPDFには次のように書かれています。

これは、doubleデータ型で操作を実行できないことを意味します...そうですか?確かに、数日前にdoubleデータ型を使用してプロジェクトを作成しましたが、問題なく機能したため、これは間違っているように思われます。誰か提案がありますか?ありがとうございました!

編集問題の「実際の」解決策を見つけることができなかったため、最終的に、cutil_inline_runtime.hの「CURAND_STATUS_DOUBLE_PRECISION_REQUIRED」の行をコメントアウトしました。これで機能します。私はそれが「醜い」ことを知っていますが、それが助けになった唯一のものでした...