問題タブ [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.
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 出力を比較すると、最終結果に測定可能な違いが生じます。奇妙に聞こえるかもしれませんが、これが観察とは何かということです。ここでコードを共有できればと思いますが、非常に機密です。誰かがこれを乗り越えるために私を助けてくれれば、本当に感謝しています。
前もって感謝します...!
mysql - MySQLが正しいデータを取得しないのはなぜですか?
私はCodeIgniterのActiveRecordを使用しており、コードは次のとおりです。
var_dump
私が得るとき$campaign_ledger
:
しかし、データが私のデータベースに入るとき、それbalance
は91.36800000000001
何らかの理由でです。では、切断とは何ですか?
編集
に変更した後DECIMAL(10,4)
も、出力として取得91.3680
します。
c++ - c ++文字列は、印刷時に二重に短縮されています
この文字列操作は、省略形で double を出力しますが、その理由はわかりません。なぜこれが起こっているのですか?出力の最初の行のような完全な出力を取得するにはどうすればよいですか?
opencl - Radeon HD 4850およびOpenCL:cl_khr_fp64はこのビデオカードで動作しますか?
このビデオカード(Radeon HD 4850)は、AMD互換性テーブルに従ってOpenCL1.0にのみ準拠しています。doubleNタイプで集中的な財務計算を実行するには、ハードウェアが必要です(フロートはまったくありません!)。このカードテーブルによると、このカードはダブルタイプで動作することができます。今ではかなり魅力的な価格で購入する可能性があります。
回答者が、fp64拡張機能を備えたOpenCL用にこのカードを実際に使用した経験を持っていることを感謝します。もちろん、このカードに問題がある場合は、ここに2行入れてください。
私の英語をありがとう、そしてごめんなさい。
algorithm - 大きな整数の GCD アルゴリズム
高速 GCD 計算アルゴリズムに関する情報を探しています。特に、その実現に注目したい。
私にとって最も興味深いもの: - Lehmer GCD アルゴリズム - Accelerated GCD アルゴリズム - k-ary アルゴリズム - FFT を使用した Knuth-Schonhage。高速化された GCD アルゴリズムに関する情報はまったくありません。中程度の入力 (〜 1000 ビット) で最も効果的で高速な gcd 計算方法として言及されている記事をいくつか見ただけです。
理論的な観点からは、それらを理解するのは非常に難しいように見えます。リストからアルゴリズム\パーツを実現したコード(C ++で望ましい)を共有するか、これを行った経験を共有してください。また、情報、コメント、アドバイス、調べるべき場所を教えていただければ幸いです。大きな整数を扱うクラスがありますが、それを扱うメソッドがありません。確かに、Euclid と Binary gcd アルゴリズムを除いて、今のところ私には明らかです。問題ありません。私が最後に取得したい主なもの: 実現のコード lehmer gcd. (リストのほうが簡単です)
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
java - 倍精度の数値を10進数に変換しようとしています
倍精度の数値を10進数に変換しようとしています。たとえば、倍精度でバイトとしての数値22は次のとおりです。
今、私はこれらの値を再び22に変換しようとします:
しかし、結果は完全に間違っています:4.6688606E18
この数は何ですか?助けてください、私は完全に混乱しています!
倍精度のIEEE標準754に準拠:
doubleとして格納される値には、次の表に示すようにフォーマットされた64ビットが必要です。
63符号(0 =正、1 =負)
62から52の指数、1023でバイアス
数1の51から0の分数f
では、倍精度を数値に変換して22を再び取得するにはどうすればよいですか?これらの答えはすべて間違っています
c - C でより高い精度で数値を格納する
非常に高い精度(約10^-10
)で数値を格納し、さらにそれらをパラメータ( create_bloomfilter ([yet to decide the type] falsePositivity, long expected_num_of_elem)
)で使用する必要があるプログラムを作成しています。
私が得ることができる最高の精度は、十分ではありませんdouble
。10^-6
cでより高い精度で数値を保存するにはどうすればよいですか?
java - Double.parseDouble()およびString.valueOf()の精度
次のステートメントは、以下をdouble
除くすべての(Javaプリミティブ倍精度IEEE-754)に当てはまりNaN
ますか?
別の言い方をすれば、シリアル化された(String.valueOf()を使用して)double値を解析すると、常に正確な元のdoubleが生成されますか?
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」の行をコメントアウトしました。これで機能します。私はそれが「醜い」ことを知っていますが、それが助けになった唯一のものでした...