タグ付けされた質問 「precision」

プログラミングの数値精度に関連する質問。分類精度については、タグ[precision-recall]を使用します。

3
Rでの印刷出力の10進桁数の制御
Rには、桁の表示を制御するためのオプションがあります。例えば: options(digits=10) Rセッション終了までの計算結果を10桁で表示することになっています。Rのヘルプファイルでは、digitsパラメータの定義は次のとおりです。 桁数:数値を印刷するときに印刷する桁数を制御します。これは単なる提案です。有効な値は1 ... 22デフォルトで7 したがって、これは単なる提案であると述べています。多かれ少なかれ常に10桁を表示したい場合はどうなりますか? 2つ目の質問は、22桁を超える数値を表示したい場合、つまり100桁のようなより正確な計算を行う場合はどうなりますか?ベースRで可能ですか、それとも追加のパッケージ/機能が必要ですか? 編集: jmoyの提案のおかげで、私は試してみsprintf("%.100f",pi)ました [1] "3.1415926535897931159979634685441851615905761718750000000000000000000000000000000000000000000000000000" 小数点以下48桁です。これはRが処理できる最大制限ですか?

11
最も正確な結果を得るには、フロートをどの順序で追加する必要がありますか?
これは私が最近のインタビューで尋ねられた質問であり、知りたいです(私は実際には数値解析の理論を覚えていませんので、私を助けてください:) 浮動小数点数を累積する関数がある場合: std::accumulate(v.begin(), v.end(), 0.0); vでstd::vector<float>、たとえば、。 それらを蓄積する前にこれらの数値をソートする方が良いでしょうか? どの順序が最も正確な答えを与えるでしょうか? 数値を昇順で並べ替えると、実際には数値誤差が少なくなると思いますが、残念ながら自分では証明できません。 PS私はこれがおそらく実世界のプログラミングとは何の関係もないことに気づき、好奇心旺盛なだけだと思います。

9
浮動小数点値が0に等しいかどうかをチェックしても安全ですか?
通常、double型またはdecimal型の値の等価性に依存することはできませんが、0が特殊な場合かどうか疑問に思っています。 0.00000000000001と0.00000000000002の間の不正確さは理解できますが、0は何もないため、混乱するのはかなり難しいようです。何も不正確だとしたら、それはもはや何もありません。 しかし、私はこのトピックについてあまり知らないので、私が言うことはできません。 double x = 0.0; return (x == 0.0) ? true : false; それは常にtrueを返しますか?

11
PHP7.1 json_encode()フロートの問題
これはもっと注意が必要なので、問題ではありません。json_encode()PHP7.1.1を使用するアプリケーションを更新しましたが、フロートが17桁に拡張されることがあるという問題が発生していました。ドキュメントによると、PHP 7.1.xは、serialize_precisiondouble値をエンコードするときに精度の代わりに使用し始めました。私はこれが例の値を引き起こしたと推測しています 472.185 になる 472.18500000000006 その値が通過した後json_encode()。発見してから、PHP 7.0.16に戻り、json_encode()。の問題は発生しなくなりました。また、PHP 7.0.16に戻す前に、PHP7.1.2に更新しようとしました。 この質問の背後にある理由は、PHP-浮動小数点精度に由来しますが、これのすべての理由は、の精度からserialize_precisionの使用法への変更によるものjson_encode()です。 誰かがこの問題の解決策を知っているなら、私は推論/修正について聞いて喜んでいます。 多次元配列からの抜粋(前): [staticYaxisInfo] => Array ( [17] => stdClass Object ( [variable_id] => 17 [static] => 1 [min] => 0 [max] => 472.185 [locked_static] => 1 ) ) そして通過した後json_encode()... "staticYaxisInfo": { "17": { "variable_id": "17", "static": "1", "min": 0, "max": 472.18500000000006, …
98 php  json  precision  php-7.1 

7
C#DateTime.Now精度
いくつかの単体テストを行っているときに、DateTime.UtcNowで予期しない動作が発生しました。DateTime.Now/UtcNowを連続して呼び出すと、より正確なミリ秒の増分をキャプチャするのではなく、予想よりも長い時間間隔で同じ値を返すようです。 正確な時間測定を行うのにより適したストップウォッチクラスがあることは知っていますが、誰かがこの動作をDateTimeで説明できるかどうか知りたいですか?DateTime.Nowの正式な精度は文書化されていますか(たとえば、50ミリ秒以内に正確ですか)?なぜDateTime.Nowは、ほとんどのCPUクロックが処理できるものよりも精度が低くなりますか?たぶん、それは最も一般的な分母CPUのために設計されただけでしょうか? public static void Main(string[] args) { var stopwatch = new Stopwatch(); stopwatch.Start(); for (int i=0; i<1000; i++) { var now = DateTime.Now; Console.WriteLine(string.Format( "Ticks: {0}\tMilliseconds: {1}", now.Ticks, now.Millisecond)); } stopwatch.Stop(); Console.WriteLine("Stopwatch.ElapsedMilliseconds: {0}", stopwatch.ElapsedMilliseconds); Console.ReadLine(); }

6
0.0と1.0の間にはいくつの倍数がありますか?
これは何年も頭に浮かんだことですが、前に尋ねる時間はありませんでした。 多くの(疑似)乱数ジェネレーターが0.0〜1.0の乱数を生成します。数学的には、この範囲には無限の数がありますdoubleが、浮動小数点数なので、精度は有限です。 だから質問は: double0.0と1.0の間にいくつの数字があるのですか? 1と2の間の数だけありますか?100から101の間?10 ^ 100と10 ^ 100 + 1の間? 注:違いがある場合はdouble、特にJavaの定義に興味があります。

2
SQLで199.96-0 = 200なのはなぜですか?
奇妙な請求書を受け取っているクライアントがいます。私はコアの問題を切り分けることができました: SELECT 199.96 - (0.0 * FLOOR(CAST(1.0 AS DECIMAL(19, 4)) * CAST(199.96 AS DECIMAL(19, 4)))) -- 200 what the? SELECT 199.96 - (0.0 * FLOOR(1.0 * CAST(199.96 AS DECIMAL(19, 4)))) -- 199.96 SELECT 199.96 - (0.0 * FLOOR(CAST(1.0 AS DECIMAL(19, 4)) * 199.96)) -- 199.96 SELECT 199.96 - (CAST(0.0 AS …

5
Pythonの倍精度浮動小数点値?[閉まっている]
クローズ。この質問はもっと焦点を合わせる必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てるようにします。 2ヶ月前に閉店しました。 この質問を改善する floatよりも精度の高いデータ型はありますか?

2
差がマシンの精度よりも小さいかどうかを確認する正しい/標準的な方法は何ですか?
私はしばしば、得られた差が機械の精度を超えているかどうかを確認する必要がある状況に陥ります。この目的のために、Rには便利な変数があります.Machine$double.eps。ただし、この値の使用に関するガイドラインについてRソースコードを参照すると、複数の異なるパターンが表示されます。 例 statsライブラリの例をいくつか示します。 t.test.R if(stderr < 10 *.Machine$double.eps * abs(mx)) chisq.test.R if(abs(sum(p)-1) > sqrt(.Machine$double.eps)) 統合します。 rel.tol < max(50*.Machine$double.eps, 0.5e-28) lm.influence.R e[abs(e) < 100 * .Machine$double.eps * median(abs(e))] <- 0 princomp.R if (any(ev[neg] < - 9 * .Machine$double.eps * ev[1L])) 等 ご質問 どのようにして、これらの異なるすべての背後にある理由を理解することができ10 *、100 *、50 *およびsqrt()修飾子を? .Machine$double.eps精度の問題による差異の調整に使用するガイドラインはありますか?

1
np.dotが不正確なのはなぜですか?(n次元配列)
np.dot2つの'float32'2D配列を取得するとします。 res = np.dot(a, b) # see CASE 1 print(list(res[0])) # list shows more digits [-0.90448684, -1.1708503, 0.907136, 3.5594249, 1.1374011, -1.3826287] 数字。例外として、次のものを変更できます。 ケース1:スライスa np.random.seed(1) a = np.random.randn(9, 6).astype('float32') b = np.random.randn(6, 6).astype('float32') for i in range(1, len(a)): print(list(np.dot(a[:i], b)[0])) # full shape: (i, 6) [-0.9044868, -1.1708502, 0.90713596, 3.5594249, 1.1374012, -1.3826287] …
15 python  c  arrays  numpy  precision 

5
順序付けられた数値の効率的な安定合計
浮動小数点正数のかなり長いリスト(std::vector<float>、サイズ〜1000)があります。番号は降順でソートされます。順序に従ってそれらを合計すると: for (auto v : vec) { sum += v; } ベクトルの終わり近くはsumより大きいので、数値の安定性の問題が発生する可能性がありますv。最も簡単な解決策は、ベクトルを逆の順序でトラバースすることです。私の質問は、前向きの場合と同様に効率的ですか?キャッシュが不足しますか? 他のスマートなソリューションはありますか?

2
C ++でn番目の「nextafter」浮動小数点値を取得する標準的な方法はありますか
C ++にはstd::nextafter()があり、指定された浮動小数点値fの次の表現可能な値を返します。私の場合、下位仮数ビットにnビットのスロップを許可したいので、3ビットのスロップは、ある特定の値fの後に8番目の次の値を取得する必要があります。私はnextafter()8回電話することができますが、これを処理するより良い方法はありますか? ほとんどの値について、IEEE 754のレイアウトのおかげで、FP値をにキャストしuint_64、許容誤差(1<<33ビットのスロップ)を追加してから、にキャストし直すことで問題を解決できますdouble。ただし、IEEE 754浮動小数点(良い仮定ですが、堅実でもありません)。 (背景として、これはFPの不正確さのためにサーフェスの内側に時々配置される光線とサーフェスの交点を巻き上げるために使用します。堅牢な浮動小数点に精通している人epsilonは、なぜ恐ろしい解決策であるかを理解します。)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.