問題タブ [floating-accuracy]

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

perl - PerlのStatistics::Descriptionで無限ループを引き起こす丸め誤差を回避するにはどうすればよいですか?

PerlのStatistics::Descriptionライブラリを使用して度数分布を計算し、浮動小数点の丸め誤差の問題に直面しています。

0.205と0.205の2つの値(他の数値から取得してそれらにスプリント)を統計モジュールに渡し、度数分布を計算するように依頼しましたが、無限ループに陥っています。

デバッガーをステップスルーすると、次のことがわかります。

$ self-> sample_range(範囲はmax-min)は、予想どおり0ではなく2.77555756156289e-17を返します。これは、ループ((min + = range)<max))が(すべての目的と目的で)無限ループに入ることを意味します。

DB <8> print $ self-> {max};
0.205
DB <9> print $ self-> {min};
0.205
DB <10> print $ self-> {max}-$ self-> {min};
2.77555756156289e-17

したがって、これは丸めの問題のように見えます。しかし、これを自分の側で修正する方法を考えることはできません。また、ライブラリを編集することが良い考えかどうかはわかりません。回避策または代替案の提案を探しています。

乾杯、ニール

0 投票する
10 に答える
1703 参照

javascript - 1.265 * 10000 = 126499.99999999999?

1.265 に 10000 を掛けると、Javascript を使用すると 126499.99999999999 が得られます。

これはなぜですか?

0 投票する
17 に答える
76152 参照

c++ - C++で整数log2()を実行するには?

C++ 標準ライブラリでは、浮動小数点ログ メソッドしか見つかりませんでした。ここで、ログを使用して、バイナリ ツリー ( ) のインデックスのレベルを見つけますfloor(2log(index))

コード (C++):

残念ながら、一部のエッジ要素 (値が 2^n の要素) では、ログは n.0 ではなく n-1.999999999999 を返します。この恐怖は正しいですか?常に正しい答えを返すようにステートメントを変更するにはどうすればよいですか?

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

precision - 無限精度の数学ライブラリはどのように実装されていますか?

だから私は浮動小数点の精度 (そして 1.1 のようなものを 2 進数で正確に表現できないこと) については知っていますが、疑問に思っているのは、数学関連のライブラリはどのようにして無限精度を実装しているのでしょうか? つまり、たとえば 1.1 をバイナリで正確に表すにはどうすればよいでしょうか。簡単な説明だけでも結構です。正確な詳細は自分で把握できます。ありがとう。:)

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

php - PHP/MySQL: ベスト マネー オペレーション/ストア プラクティス?

そこで、お金をたくさん扱うアプリケーション(PHP/MySQL)を作ろうと考えており、PHPのfloatデータ型やMySQLの10進数を参考にしながら、お金をどうやって貯めて運用していくかを考えています。

2つの選択肢を考えていました。そのうちの 1 つは、浮動小数点数の不正確さを処理せず、DB にも整数として格納するために、通貨を整数セント形式 ($dollars * 100) で操作および格納することです。もう 1 つは、DB に 10 進数として格納し、計算に PHP で BC Math を使用することです。

そのため、どのオプションを使用するのが最適かを一晩中グーグル検索しましたが、明確な答えは見つかりませんでした。私が見た唯一の合理的なオプションは、整数のセント 1 でした (これは、ブラウザーに表示するたびに DB に保存する前に、ドルからセントに、またはその逆に多くの変換を行うことを意味するため、あまり好きではありません)。

また、MySQL の 10 進数 (MySQL は 10 進数を文字列として格納し、浮動小数点数として操作するなど) について不満を言う人もいますが、それは古い投稿でした。MySQL のドキュメントによると、現在のバージョンは小数を正しく処理しますが、唯一の不満は、宣言された小数部の長さを超える値の小数部を切り捨てることでした (たとえば、decimal(9,2) と宣言された列に 12.326 の値を格納する場合)。 、しかし、私の調査では、単に切り捨てるのではなく丸めます (12.326 は 12.33 になります)。これは私の意見では正しいです。

また、お金を小数として格納し、PHP BCMath を使用して計算を行うことに関する推奨事項は見つかりませんでした。これは、BC および GMP 数学関数について知っている人がほとんどいないためだと思います。

では、精度、速度 (BCMath の計算速度、MySQL の 10 進速度と整数)、およびプログラミングの快適さを考慮して、どのオプションを使用するのが最適でしょうか?

0 投票する
21 に答える
176547 参照

java - Java でフロートを比較するために == を使用することの何が問題になっていますか?

このjava.sunページ によると==、Javaの浮動小数点数の等値比較演算子です。

ただし、このコードを入力すると:

私のエディタに入って静的分析を実行すると、次のようになります。

==浮動小数点値を比較するために使用することの何が問題になっていますか? それを行う正しい方法は何ですか? 

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

.net - 浮動小数点等価?

精度の低下の可能性を無視して、2 つの double を比較できるようにしたいと考えています。このケースを処理するメソッドは既にありますか?

そうでない場合、2 つの double 間の適切な等価性を知るためのしきい値/ガイドラインはありますか?

0 投票する
11 に答える
20508 参照

c - C での緯度/経度の保存と圧縮

緯度/経度座標の最も効率的な表現を知っている人はいますか? 精度レベルは、民生用 GPS デバイスには十分なはずです。

ほとんどの実装ではdouble各ユニットを使用しているようですが、floatまたは固定小数点形式で十分であるとは思えません。これらの値の大規模な配列を圧縮または保存しようとした人から聞いてみたいと思います。

編集:

言い換えれば、消費者レベルのデバイスの緯度/経度を表すために必要な最小精度は?

0 投票する
10 に答える
15488 参照

c++ - 1ステップ早くダブルブレイクアウトを使用するC++のForループ、境界値に到達していません

32ビットUbuntu8.04でgcc4.2.4を使用してコンパイルされた単純なC++プログラムがあります。変数がゼロから特定のステップサイズで1にインクリメントされるforループがあります。doubleステップサイズがの0.1場合、動作は私が期待したものです。ただし、ステップサイズが「0.05」の場合、ループは。の後に終了し0.95ます。なぜこれが起こっているのか誰か教えてもらえますか?出力は以下のソースコードに従います。

出力