問題タブ [inexact-arithmetic]
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.
python - float の近似比較を使用して、Python で 2 つのファイルの「あいまいな」差異を生成します
2 つのファイルの比較に問題があります。基本的に、私がやりたいことは、2 つのファイル間の UNIX のような diff です。たとえば、次のようになります。
$ diff -u 左ファイル 右ファイル
ただし、私の 2 つのファイルにはフロートが含まれています。また、これらのファイルは異なるアーキテクチャで生成された (ただし計算は同じ) ため、浮動小数点値はまったく同じではありません (たとえば、1e-10 だけ異なる場合があります)。しかし、ファイルを「比較」することで私が求めているのは、重要な違いと思われるものを見つけることです (たとえば、違いは 1e-4 を超えています)。UNIX コマンド diff を使用しているときに、浮動小数点値を含むほとんどすべての行が異なっています。それが私の問題です:「diff -u」が提供するような結果の差分を取得するにはどうすればよいですか?フロートの比較に関する制限は少なくなりますか?
私はそれを行うために Python のスクリプトを作成しようと考え、diff のような比較を提供するモジュール difflib を見つけました。しかし、私が見つけたドキュメンテーションは、それをそのまま(単一のメソッドを介して)使用する方法を説明し、内部オブジェクトを説明していますが、必要に応じてdifflibオブジェクトをカスタマイズする方法に関するものは何も見つかりません(比較メソッドのみを書き直すか、そのような)...解決策は、統一された違いを取得し、それを「手動で」解析して「誤った」違いを削除することであると思います。これはエレガントではありません。既存のフレームワークを使用したいと思います。
それで、私が求めていることができるように、このライブラリをカスタマイズする方法を知っている人はいますか? または、少なくとも私を正しい方向に向けてください... Pythonではない場合、シェルスクリプトで仕事ができるでしょうか?
どんな助けでも大歓迎です!ご回答ありがとうございます。
scheme - スキーム関数の不正確->正確はどのように機能しますか?
inexact->exact
SICPで説明されているScheme手順はどのように機能しますか?
scheme - スキーム-R5RS数値タワーの「不正確な」概念
スキームR5RSを実装する方法を考えているときに、次のR5RSの抜粋(22〜23ページ)に戸惑いました。
(剰余-13 -4)==> -1
(剰余-13 -4.0)==> -1.0; 不正確(lcm 32 -36)==> 288
(lcm 32.0 -36)==> 288.0; 不正確(分母(/ 6 4))==> 2
(分母(正確->不正確(/ 6 4)))==> 2.0
-4.0、32.0、および(exact-> inexact(/ 6 4))が不正確であっても、実装は次の手順に進むために、それらの正確な同等物(-4、32、および3/2)を「記憶」する必要があることを理解する必要があります。整数除算、素因数分解など?
そうでなければ、実装はどのようにして上記の答えを出すことに成功するでしょうか?
あなたがこの主題に投げることができるどんな光にも前もって感謝します!:)
ニコラス
c++ - double 0.0 は常に移植可能な C で正確に表されますか?
次のコードは、ANSI 準拠の C コンパイラを備えたすべての環境で機能すると期待できますか?
C++はどうですか?
c++ - float を 10 で割る
重複の可能性:
10 進数を 2 進数で正確に表現できないのはなぜですか?
私は、C++ で数学を使用するための非常に単純なアルゴリズムを開発しています。
また、「step」という名前の浮動小数点変数があります。while ループを終了するたびに、step を 10 で割る必要があります。
だから私のコードはこのようなものです、
私のばかげた単純な論理では、それで終わりです。step は、1 から 0.1、0.1 から 0.01 の 10 で除算されます。
しかし、そうではなく、代わりに 0.100000000001 のようなものが表示されます。そして、私は「What The Hell」のようでした
誰かがこれで私を助けてくれませんか。私が完全に理解していないのは、おそらくデータ型自体に関するものです。したがって、誰かがさらに説明できれば幸いです。
iphone - DBL_MAXは、文字列から再解析された後、精度のかなりの部分を失います
私はiPhoneでこのコードを実行しています:
...そしてこの出力を取得します:
printf()
なぜ/のシーケンスatof()
が精度を失うのですか(私stringWithFormat
はprintf
内部的にそうすると思います)?これは、DBL_MAXだけでなく、非常に大きな数ごとに発生します(つまり、10000
期待どおりに機能しますが、機能DBL_MAX / 2
しません)。それを回避する方法はありますか?
functional-programming - なぜ (max (sin (/ 5 3)) (sqr 12)) が Scheme/Dr. Racket (初級学生言語) は不正確と評価されましたか?
私は How to Design Programs を読んでいましたが、演習 2.1.1 では次のことを行います。
DrScheme に数値を 2 乗する操作があるかどうかを調べます。角度のサインを計算します。および 2 つの数の最大値を決定します。-- 秒。2.2、例 2.1.1
私のコードは次のとおりです。
そして、プログラムを実行したときの結果は次のとおりです。
#i0.9954079577517649
との最大値を取得する最後の式で混乱しています144
。144
答えはor144.0
の代わりにすべきではありません#i144.0
か?
math - Clojureで数値をclojure.lang.Ratio型に変換するには?
スキームでは、次のことができます。
Clojure では、次のようなことができます。
しかし、Scheme では次のことができます。
Clojureでは不可能です:
Double (または実際には任意の種類の数値) を clojure.lang.Ratio に変換するにはどうすればよいですか?
スキームにはinexact->exact
、Clojure の「double to ratio」のようなものもありますが、それに似たものは見つかりません。