問題タブ [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.
c - "%f" を使用して double 値を正しい精度で文字列に入力する方法
sprintf
次のようなものを使用して、文字列に double 値を設定しようとしています。
しかし、精度は小数点以下 6 桁に切り捨てられています。精度には小数点以下約 10 桁が必要です。
それはどのように達成できますか?
parsing - 文字列から浮動小数点数を手動で解析する方法
もちろん、ほとんどの言語にはこのためのライブラリ関数がありますが、自分でやりたいとします。
float が C または Java プログラム ('f' または 'd' 接尾辞を除く) のように与えられるとします。たとえば、" 4.2e1
"、" .42e2
"、または単に " 42
" です。一般に、小数点の前に「整数部」、小数点の後に「小数部」、「指数部」があります。3 つすべてが整数です。
個々の数字を見つけて処理するのは簡単ですが、どのようにしてそれらを型の値に、float
またはdouble
精度を失わずに構成するのでしょうか?
整数部分に 10^ nを掛けることを考えています。nは小数部分の桁数です。次に、小数部分を整数部分に加算し、指数からnを減算します。これは、たとえば4.2e1
に効果的に変わります。42e0
次に、pow
関数を使用して 10^指数を計算し、その結果に新しい整数部分を掛けることができます。問題は、この方法が全体を通して最大の精度を保証するかどうかです。
これについて何か考えはありますか?
delphi - Delphi での writeln/readln による実数の精度
私のクライアント アプリケーションは、writeln と readln を使用して、テキスト ファイルを介して real 型のかなりの数の変数をエクスポートおよびインポートします。コードが次のようになるように、書き込まれたフィールドの幅を広げようとしました。
エクスポートしてから再度インポートしてエクスポートし、ファイルを比較すると、最後の 2 桁に違いがあります。
これは実際にアプリに違いをもたらすため、クライアントは私がそれについて何ができるかを知りたがっています. 今、それを行うのが書き込み/読み取りだけであるかどうかはわかりませんが、ヘイスタックに再び飛び込む前に、簡単な質問を投げかけようと思いました。これでバイナリにする必要がありますか?
これは通貨などを扱うアプリではありません。ファイルとの間で値を読み書きするだけです。浮動小数点が時々少し奇妙であることは知っていますが、ルーチンの 1 つ (writeln/readln) で面白いことが起こっているのではないかと思いました。
c# - C# では double は float よりも高速ですか?
float の大きな配列を読み取り、それらを使用していくつかの簡単な操作を実行するアプリケーションを作成しています。double よりも高速だと思ったので float を使用していますが、いくつかの調査を行った後、このトピックについて混乱があることがわかりました。誰でもこれについて詳しく説明できますか?
javascript - 2.9999999999999999 >> .5?
Math.floor() を使用する代わりに、数値を .5 だけ右シフトできると聞きました。その制限を確認して適切な代替品であることを確認することにしたので、次の値を確認し、Google Chrome で次の結果を得ました。
いくつかいじった後、Chrome と Firefox では、2 を 0.5 だけ右にシフトすると 2 になる可能性のある最大値は 2.9999999999999997779553950749686919152736663818359374999999¯ (9 の繰り返し) であることがわかりました。番号は IE では 2.9999999999999997779¯ です。
私の質問は: .000000000000000777955395074968691915273663818359374 という数字の意味は何ですか? とても奇妙な数字で、私の好奇心を刺激しました。
私は答えまたは少なくともある種のパターンを見つけようとしていますが、私の問題は、ビット単位の操作を本当に理解していないという事実にあると思います。原理的には理解できますが、ビット シーケンスを 0.5 ずつシフトすることは、私にはまったく意味がありません。どんな助けでも大歓迎です。
記録のために、奇妙な数字シーケンスは 2^x で変わります。適切に切り捨てられる次の数値の可能な最大値:
floating-point - 21.399999618530273 のような 21.4 のような値に初期化された double 変数が表示されるのはなぜですか?
デバッガーでは、これらは および として表示され11.631000000000000
ます21.399999618530273
。
どうすればこれを回避できますか?
.net - .netでダブル
次のコードがある場合 (これは .NET で記述されています)
なぜi
等しくないの0.3
ですか?
何か案は?
math - Luaの標準(または最もサポートされている)大きな数(任意精度)ライブラリは何ですか?
四捨五入できない多数の数値を処理しています。Luaの標準的な数学ライブラリを使用すると、内部の制限を超えて精度を維持する便利な方法はないようです。また、大きな数で動作するようにロードできるライブラリがいくつかあることもわかります。
- http://oss.digirati.com.br/luabignum/
- http://www.tc.umn.edu/~ringx004/mapm-main.html
- http://lua-users.org/lists/lua-l/2002-02/msg00312.html(#2と同じである可能性があります)
- http://www.gammon.com.au/scripts/doc.php?general=lua_bc(ただし、ソースが見つかりません)
さらに、バインディングが確立されている場合、Luaから呼び出すことができるCのライブラリが多数あります。
これらのライブラリの1つ以上を使用した経験はありますか?
java - Java で double を使用して精度を保持する
上記のコードは次を出力します。
これを11.4で印刷する(または使用できるようにする)にはどうすればよいですか?
javascript - JavaScriptでNumber.toFixedのプロトタイプを作成するにはどうすればよいですか?
JavaScriptを使用して小数を6桁に丸める必要がありますが、Number.toFixedに依存できないように、従来のブラウザーを検討する必要があります。
toExponential、toFixed、およびtoPrecisionの大きな欠点は、Firefoxバージョン1.5までMozillaでサポートされていないかなり最新の構造であるということです(ただし、IEはバージョン5.5以降のメソッドをサポートしていました)。これらのメソッドを使用するのはほとんど安全ですが、古いブラウザは壊れてしまうため、公開プログラムを作成している場合は、古いブラウザにこれらのメソッドの機能を提供する独自のプロトタイプを提供することをお勧めします。
私は次のようなものを使用することを検討しています
これを古いブラウザにプロトタイプを提供するための最良の方法は何ですか?