問題タブ [floating-point]
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 桁が必要です。
それはどのように達成できますか?
c++ - cout は「0」ではなく「-0」を出力します
なぜこの素晴らしいコードが出力され、期待どおりに出力-0
されないのでしょうか?0
c - 文字列が ANSI C の整数または浮動小数点数かどうかを判断する
ANSI C のみを使用して、C スタイルの文字列が整数または実数 (つまり、float/double) であるかどうかをかなり確実に判断する最良の方法は何ですか?
c - x86でfloatをintに変換する最速の方法は何ですか?
x86 CPU で浮動小数点数を int に変換する最も速い方法は何ですか。次の任意の組み合わせについては、Cまたはアセンブリ(Cでインライン化できる)であることが望ましい:
- 32/64/80 ビット浮動小数点 -> 32/64 ビット整数
コンパイラーに任せるよりも速いテクニックを探しています。
parsing - 文字列から浮動小数点数を手動で解析する方法
もちろん、ほとんどの言語にはこのためのライブラリ関数がありますが、自分でやりたいとします。
float が C または Java プログラム ('f' または 'd' 接尾辞を除く) のように与えられるとします。たとえば、" 4.2e1
"、" .42e2
"、または単に " 42
" です。一般に、小数点の前に「整数部」、小数点の後に「小数部」、「指数部」があります。3 つすべてが整数です。
個々の数字を見つけて処理するのは簡単ですが、どのようにしてそれらを型の値に、float
またはdouble
精度を失わずに構成するのでしょうか?
整数部分に 10^ nを掛けることを考えています。nは小数部分の桁数です。次に、小数部分を整数部分に加算し、指数からnを減算します。これは、たとえば4.2e1
に効果的に変わります。42e0
次に、pow
関数を使用して 10^指数を計算し、その結果に新しい整数部分を掛けることができます。問題は、この方法が全体を通して最大の精度を保証するかどうかです。
これについて何か考えはありますか?
c++ - 浮動小数点例外の C++ 例外への変換
x86 Linux で浮動小数点例外 (シグナル) を C++ 例外に変換することは可能ですか?
これはデバッグ用であるため、移植性や不完全性は問題ありません (たとえば、すべてのデストラクタが呼び出されることが 100% 保証されていない場合)。
c# - デバッグ/リリース モードでの浮動小数点/倍精度
C#/.NET 浮動小数点演算はデバッグ モードとリリース モードで精度が異なりますか?
c++ - 世界最速の atof 実装はどこにありますか?
US-en ロケール、ASCII、および非科学表記に最適化された IA32 での非常に高速な atof() 実装を探しています。Windows のマルチスレッド CRT は、isdigit() を呼び出すたびにロケールの変更をチェックするため、ここでは惨めに機能しません。私たちの現在のベストは、perl + tcl の atof 実装のベストから導き出されたもので、msvcrt.dll の atof を桁違いに上回っています。もっとうまくやりたいのですが、アイデアがありません。BCD 関連の x86 命令は有望に思えましたが、perl/tcl C コードを上回るパフォーマンスを得ることができませんでした。SO'ers はそこにある最高のものへのリンクを掘り下げることができますか? 非 x86 アセンブリ ベースのソリューションも歓迎します。
最初の回答に基づく説明:
このアプリケーションでは、最大 2 ulp の不正確さは問題ありません。
変換される数値はネットワークを介して小さなバッチで ASCII メッセージで到着し、アプリケーションはそれらを可能な限り低いレイテンシーで変換する必要があります。
sql-server - SQL Server 2005 の数値精度の損失
いくつかの金融関連の SQL コードをデバッグすると、numeric(24,8) 数学の精度に関する奇妙な問題が見つかりました。
MSSQL で次のクエリを実行すると、A + B * C 式の結果が 0.123457 になります。
SELECT A, B, C, A + B * C FROM ( SELECT CAST(0.12345678 AS NUMERIC(24,8)) AS A, CAST(0 AS NUMERIC(24,8)) AS B, CAST(500 AS NUMERIC(24) ,8)) AS C ) T
したがって、2 つの重要なシンボルを失いました。これをさまざまな方法で修正しようとすると、中間乗算結果(ゼロです!)から数値(24,8)への変換がうまくいくことがわかりました。
そして最後に解決策があります。しかし、まだ質問があります。MSSQL がこのように動作する理由と、サンプルで実際に発生した型変換は何ですか?