問題タブ [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.
objective-c - ObjectiveCの数式が失敗する
ここのnoobは、iPhoneの複利を計算したいと考えています。
式は次のようになります。amount=principal*(1 + rate / CompoundPerYear)^(rate * years)
私は少し間違った答えを得る:
.1のレートでテストしていますが、デバッガーは.100000001を報告します。
私はそれを間違っていますか?ダブルスまたは特別なクラス(NSNumberなど)を使用する必要がありますか?
他のアイデアをありがとう!
さらに調査した結果、NSDecimalNumberクラスがまさに私が必要としているもののようです。今、私はこの悪い男の子の使い方を理解する必要があります。
ruby - Ruby で大量の (高精度) 浮動小数点数を処理する
価格が定期的に更新されるのをリッスンするアプリケーションを作成していますが、データ ソースから "1.79769313486232e+308" のようなメッセージが表示されることがあります。送信される数値は決して大きな数値ではありません (例: "179769313486232e+308") が、上記の例のように、かなりの精度で送信されます。
小数点以下の最初の数桁の後にすべてを削除して、「1.798」のような結果になるようにしたいのですが、次のコードは機能しません。
Ruby でこの種の数値を適切に処理する方法はありますか?
c - 計算機イプシロンを見つけるためのコードを書こうとしています
Cのさまざまな浮動小数点形式(つまり、float、double、long double)の精度レベルを調べようとしています。現在使用しているコードは次のとおりです。
これにより、予想どおり約2^-64の値が得られます。ただし、減速度を2倍または「長い2倍」に変更すると、同じ答えが得られますが、小さい値を取得する必要がありますが、そうではありません。誰かアイデアがありますか?
c - 数の n 乗根
小数点以下 2 桁までの数の n 乗根を計算するプログラムを作成しました。たとえば、81 の 4 乗根は 3 です。125 の 3 乗根は 5 です。4 の 2 乗根を除いて、うまく機能します。出力は 2 ではなく 1.99 になります。コードは次のとおりです。
何時間も試しましたが、修正できません。誰でもこれをデバッグできますか?? とても感謝しています。
.net - C#.Netの二重の問題... 6.8!= 6.8?
私は仕事でいくつかのユニットテストを行っていましたが、アサーションの1つに特有のエラーが表示されました。expectedValueとactualValueは両方ともdoubleであることに注意してください。
例外は、それらが等しくないことを述べ、「期待値:<6.8>実際の値:<6.8>」を詳しく説明しました。
期待値はハードコードされた6.8であり、実際の値は、分類方法(EqualRecordsやJenksNatural Breaksなど)を通過するデータベース値を使用して定式化されます。
私の推測では、違いはおそらく2つの値の仮数が最下位ビットまで類似していることです。2つの値が十分に近いかどうかを確認するためにイプシロンを含めるようにテストを更新しましたが、仮数をそのdoubleを表示した場合の表示値と一致させる方法があるかどうか知りたいです。そのような仮数補正は存在しますか?
c - ヘッダー ファイルごとの C の pow() 関数正常に動作しない
次のコードでは、次のような結果が生成されることがわかります。出力がこのようになる理由について何か考えはありますか?
出力:
optimization - この計算を最適化する方法
次のアルゴリズムで集中的に使用される係数の計算に依存するモデルチェッカーを作成しています。
![代替テキスト][1]
q
は double であり、t
double もk
int です。e
指数関数の略です。この係数は、(そのステップの) 前のすべての係数の合計が 1 に達するまで、常に 0 から始まり、変更さq
れt
ないステップで使用されます。k
私の最初の実装は文字通りのものでした:
k
もちろん、小さなしきい値 (15-20) を超えた場合、階乗全体を計算することは不可能だったので、これはそれほど長くは続きませんでした: 明らかに結果がおかしくなり始めました。そこで、インクリメンタル除算を行って全体を再配置しました。
q
このバージョンは、とt
で十分な「通常」の場合は非常にうまく機能しますが、たとえばq = 50.0
、一連の 0t = 100.0
から計算を開始しk = 0 to 100
、特定の数から最後まで NaN が続きます。
もちろん、これは、数値が 0 に近づき始める操作または同様の問題によって引き起こされます。
式を最適化して、幅広い入力に対して十分に正確な結果を得る方法について何か考えはありますか?
すべてがすでに 64 ビットである必要があります (デフォルトで double を使用する OCaml を使用しているため)。128 ビットの double を使用する方法もあるかもしれませんが、その方法はわかりません。
私は OCaml を使用していますが、C、C++、Java など、どの言語でもアイデアを提供できます。私はそれらすべてをかなり使用しました。
ruby - Rubyはオプションの数字でフロートを印刷します
値を持つ浮動小数点数を出力しようとしています5
それを印刷したときに私が得るものはです5.0
、それで私の質問は:
値がちょうどの場合は後なしで5
印刷され、そうである場合はそれが印刷されるようにするにはどうすればよいですか?5
.0
5.2
私は周りを見回しましたが、私が見つけたのは、それを何らかの方法で強制することだけでした。
誰かが正しい方向に私を助けることができますか?ありがとう :)
sql - アクセス クエリで -0,000000000000001 が表示されるのはなぜですか?
私はSQLを持っています:
問題は、field1 と field2 の合計が 9.5-10.3 のような値で、結果が -0,800000000000001 になることがあります。なぜこれが起こるのか、そしてそれを解決する方法を誰か説明できますか?