問題タブ [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.

0 投票する
5 に答える
29560 参照

c - "%f" を使用して double 値を正しい精度で文字列に入力する方法

sprintf次のようなものを使用して、文字列に double 値を設定しようとしています。

しかし、精度は小数点以下 6 桁に切り捨てられています。精度には小数点以下約 10 桁が必要です。

それはどのように達成できますか?

0 投票する
7 に答える
1283 参照

c++ - cout は「0」ではなく「-0」を出力します

なぜこの素晴らしいコードが出力され、期待どおりに出力-0されないのでしょうか?0

0 投票する
9 に答える
26400 参照

c - 文字列が ANSI C の整数または浮動小数点数かどうかを判断する

ANSI C のみを使用して、C スタイルの文字列が整数または実数 (つまり、float/double) であるかどうかをかなり確実に判断する最良の方法は何ですか?

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

c - x86でfloatをintに変換する最速の方法は何ですか?

x86 CPU で浮動小数点数を int に変換する最も速い方法は何ですか。次の任意の組み合わせについては、Cまたはアセンブリ(Cでインライン化できる)であることが望ましい:

  • 32/64/80 ビット浮動小数点 -> 32/64 ビット整数

コンパイラーに任せるよりも速いテクニックを探しています。

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

parsing - 文字列から浮動小数点数を手動で解析する方法

もちろん、ほとんどの言語にはこのためのライブラリ関数がありますが、自分でやりたいとします。

float が C または Java プログラム ('f' または 'd' 接尾辞を除く) のように与えられるとします。たとえば、" 4.2e1"、" .42e2"、または単に " 42" です。一般に、小数点の前に「整数部」、小数点の後に「小数部」、「指数部」があります。3 つすべてが整数です。

個々の数字を見つけて処理するのは簡単ですが、どのようにしてそれらを型の値に、floatまたはdouble精度を失わずに構成するのでしょうか?

整数部分に 10^ nを掛けることを考えています。nは小数部分の桁です。次に、小数部分を整数部分に加算し、指数からnを減算します。これは、たとえば4.2e1に効果的に変わります。42e0次に、pow関数を使用して 10^指数を計算し、その結果に新しい整数部分を掛けることができます。問題は、この方法が全体を通して最大の精度を保証するかどうかです。

これについて何か考えはありますか?

0 投票する
5 に答える
3243 参照

c++ - 浮動小数点例外の C++ 例外への変換

x86 Linux で浮動小数点例外 (シグナル) を C++ 例外に変換することは可能ですか?

これはデバッグ用であるため、移植性や不完全性は問題ありません (たとえば、すべてのデストラクタが呼び出されることが 100% 保証されていない場合)。

0 投票する
5 に答える
6760 参照

c# - デバッグ/リリース モードでの浮動小数点/倍精度

C#/.NET 浮動小数点演算はデバッグ モードとリリース モードで精度が異なりますか?

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

c++ - 2 つの double の差をイプシロン値と比較するのではなく、2 の補数を使用して比較するのはなぜですか?

ここここを参照...イプシロン法ではなく 2 の補数を使用するのはなぜですか? ほとんどの場合、イプシロン法で十分なようです。


更新: 私は純粋に、どちらか一方を使用する理論的な理由を探しています。私はいつもイプシロン法を使ってきました。

2 の補数比較を成功させた人はいますか? なんで?なぜだめですか?

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

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 メッセージで到着し、アプリケーションはそれらを可能な限り低いレイテンシーで変換する必要があります。

0 投票する
3 に答える
9098 参照

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 がこのように動作する理由と、サンプルで実際に発生した型変換は何ですか?