タグ付けされた質問 「floating-point」

浮動小数点数は実数の近似値であり、整数より広い範囲を表すことができますが、同じ量のメモリを使用しますが、精度は低くなります。質問が小さな算術エラー(たとえば、0.2 + 0.1が0.300000001に等しいのはなぜですか)または10進数の変換エラーについての質問である場合は、投稿する前に以下のリンクの「情報」ページをお読みください。


9
Perlで文字列を数値に変換するにはどうすればよいですか?
10進値を保持する文字列があり、その文字列を浮動小数点変数に変換する必要があります。したがって、私が持っている文字列の例は「5.45」であり、それに.1を追加できるように同等の浮動小数点が必要です。インターネットで検索しましたが、文字列を整数に変換する方法しかわかりません。

8
JavaScript:小数点以下の桁数に丸めますが、余分なゼロは削除します
シナリオは次のとおりです。取得.9999999999999999する必要があるときに取得してい1.0ます。 小数点以下の精度を失う余裕があるので.toFixed(15)、使用しています。 丸めは機能しますが、問題は私が与えられていることです1.000000000000000。 小数点以下の桁数に丸める方法はありますが、余分な空白を削除しますか? 注:.toPrecision私が望むものではありません。小数点以下の数値のみを指定したい。 注2:.toPrecision(1)小数点以下のデータが実際にある数値は高精度を保つ必要があるため、そのままでは使用できません。理想的には、必要な数の小数点以下の桁数(最大15)があります。

11
浮動小数点の比較はどのようにすればよいですか?
私は現在、次のようなコードを書いています。 double a = SomeCalculation1(); double b = SomeCalculation2(); if (a < b) DoSomething2(); else if (a > b) DoSomething3(); そして他の場所では私は平等をする必要があるかもしれません: double a = SomeCalculation3(); double b = SomeCalculation4(); if (a == 0.0) DoSomethingUseful(1 / a); if (b == 0.0) return 0; // or something else here つまり、浮動小数点演算がたくさん行われているので、条件についてさまざまな比較を行う必要があります。この文脈ではそのようなことは無意味なので、私はそれを整数数学に変換することはできません。 このようなことが起こる可能性があるため、浮動小数点の比較は信頼できない可能性があることを前に読みました。 double …

3
Win32のunsignedintへのダブルキャストは2,147,483,648に切り捨てられます
次のコードをコンパイルします。 double getDouble() { double value = 2147483649.0; return value; } int main() { printf("INT_MAX: %u\n", INT_MAX); printf("UINT_MAX: %u\n", UINT_MAX); printf("Double value: %f\n", getDouble()); printf("Direct cast value: %u\n", (unsigned int) getDouble()); double d = getDouble(); printf("Indirect cast value: %u\n", (unsigned int) d); return 0; } 出力(MSVC x86): INT_MAX: 2147483647 UINT_MAX: …


2
Linuxカーネルでの浮動小数点の使用
RobertLoveの「LinuxKernelDevelopment」を読んでいて、次の文章に出くわしました。 浮動小数点の(簡単な)使用なし ユーザースペースプロセスが浮動小数点命令を使用する場合、カーネルは整数モードから浮動小数点モードへの遷移を管理します。浮動小数点命令を使用するときにカーネルが実行する必要があることはアーキテクチャによって異なりますが、カーネルは通常、トラップをキャッチしてから、整数モードから浮動小数点モードへの移行を開始します。 ユーザースペースとは異なり、カーネルはそれ自体を簡単にトラップできないため、浮動小数点をシームレスにサポートするという贅沢はありません。カーネル内で浮動小数点を使用するには、他の可能な雑用の中でも、浮動小数点レジスタを手動で保存および復元する必要があります。簡単な答えは:それをしないでください!まれな場合を除いて、カーネルには浮動小数点演算はありません。 これらの「整数」モードと「浮動小数点」モードについては聞いたことがありません。それらは正確には何であり、なぜそれらが必要なのですか?この違いは、主流のハードウェアアーキテクチャ(x86など)に存在しますか、それともいくつかのよりエキゾチックな環境に固有ですか?プロセスとカーネルの両方の観点から、整数モードから浮動小数点モードへの移行には正確に何が必要ですか?

12
浮動小数点数を特定の小数点以下の桁数に切り上げる方法は?
があり8.8333333333333339、それをに変換したいとし8.84ます。Pythonでこれをどのように達成できますか? round(8.8333333333333339, 2)与えません。私はPythonやプログラミング全般に不慣れです。8.838.84 文字列として出力したくないので、結果をさらに使用します。この問題の詳細については、Tim WilsonのPythonプログラミングのヒント:ローンと支払いの計算機を確認してください。


6
Javaで整数をfloatに変換するにはどうすればよいですか?
私は2つの整数xとを持っていますy。計算する必要がx/yあり、結果としてフロートを取得したいと思います。たとえば、結果として3/21.5が欲しいです。私はそれを行うための最も簡単な(または唯一の)方法は、変換することであると考えxとyfloat型に。残念ながら、私はそれを行う簡単な方法を見つけることができません。手伝ってくれませんか。

3
非正規化浮動小数点数とは何ですか?
isnormal()リファレンスページは次のように述べています。 指定された浮動小数点数argが正規であるかどうか、つまり、ゼロ、非正規化数、無限大、またはNaNのいずれでもないかどうかを判別します。 数値がゼロ、無限、またはNaNであることは、それが何を意味するかを明確にしています。しかし、それはまた、異常と言います。数が非正規化数になるのはいつですか?

17
科学的記数法なしの二重から文字列への変換
.NET Frameworkで科学的記数法を使用せずにdoubleを浮動小数点文字列表現に変換するにはどうすればよいですか? 「小さい」サンプル(有効な数は、1.5E200またはなどの任意のサイズにすることができます1e-200): 3248971234698200000000000000000000000000000000 0.00000000000000000000000000000000000023897356978234562 標準の数値形式はどれもこのようなものではなく、カスタム形式ですはなくも小数点記号の後に開いた桁数を使用できないようです。 そこに与えられた答えは目前の問題を解決しないので、これは10の累乗表現なしでdoubleをstringに変換する方法(E-05)の複製ではありません。この質問で受け入れられた解決策は、固定小数点(20桁など)を使用することでしたが、これは私が望んでいることではありません。固定幅の最大幅は99文字であるため、固定小数点のフォーマットと冗長0のトリミングでも問題は解決しません。 注:ソリューションは、カスタムの数値形式(文化情報に応じて、他の小数点記号など)を正しく処理する必要があります。 編集:問題は、実際には前述の数字を表示することだけです。浮動小数点数がどのように機能し、どのような数を使用して計算できるかを知っています。

2
差がマシンの精度よりも小さいかどうかを確認する正しい/標準的な方法は何ですか?
私はしばしば、得られた差が機械の精度を超えているかどうかを確認する必要がある状況に陥ります。この目的のために、Rには便利な変数があります.Machine$double.eps。ただし、この値の使用に関するガイドラインについてRソースコードを参照すると、複数の異なるパターンが表示されます。 例 statsライブラリの例をいくつか示します。 t.test.R if(stderr < 10 *.Machine$double.eps * abs(mx)) chisq.test.R if(abs(sum(p)-1) > sqrt(.Machine$double.eps)) 統合します。 rel.tol < max(50*.Machine$double.eps, 0.5e-28) lm.influence.R e[abs(e) < 100 * .Machine$double.eps * median(abs(e))] <- 0 princomp.R if (any(ev[neg] < - 9 * .Machine$double.eps * ev[1L])) 等 ご質問 どのようにして、これらの異なるすべての背後にある理由を理解することができ10 *、100 *、50 *およびsqrt()修飾子を? .Machine$double.eps精度の問題による差異の調整に使用するガイドラインはありますか?

7
浮動小数点と10進数を使用する場合
このAPIを構築しています。データベースには、次のいずれかを表す値が格納されます。 割合 平均 割合 正直に言って、範囲が0〜100%の数値を表現する方法がわかりません。それは 0.00-1.00 0.00-100.00 私が知らない他の選択肢 そのための明確な選択肢はありますか?データベースで0から100%パーセントまでの何かを表すグローバルな方法は?さらに進んで、その正しいタイプは何ですか、浮動小数点または10進数ですか? ありがとうございました。

1
Haskellでの(^)の奇妙な動作
GHCiが以下の不正解を返すのはなぜですか? GHCi λ> ((-20.24373193905347)^12)^2 - ((-20.24373193905347)^24) 4.503599627370496e15 Python3 >>> ((-20.24373193905347)**12)**2 - ((-20.24373193905347)**24) 0.0 更新 Haskellの(^)関数を次のように実装します。 powerXY :: Double -> Int -> Double powerXY x 0 = 1 powerXY x y | y < 0 = powerXY (1/x) (-y) | otherwise = let z = powerXY x (y `div` 2) in …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.