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

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

7
intとfloorにキャストする
これらの間に違いはありますか? float foo1 = (int)(bar / 3.0); float foo2 = floor(bar / 3.0); 私が理解しているように、どちらの場合も同じ結果になります。コンパイルされたコードに違いはありますか?
120 c++  c  floating-point 

5
ジョンカーマックの異常な高速逆平方根(Quake III)
ジョンカーマックは(float)(1.0/sqrt(x))、奇妙な0x5f3759df定数を含め、通常の4倍の速度でフロートの逆平方根を計算する、Quake IIIソースコードに特別な機能を備えています。以下のコードを参照してください。誰かがここで何が起こっているのか、なぜこれが通常の実装よりもはるかに速く機能するのかを行ごとに説明できますか? float Q_rsqrt( float number ) { long i; float x2, y; const float threehalfs = 1.5F; x2 = number * 0.5F; y = number; i = * ( long * ) &y; i = 0x5f3759df - ( i >> 1 ); y = * ( float * ) …

29
Pythonでの浮動小数点数の切り捨て
次のように、浮動小数点数から数字を削除して、ドットの後に固定数の数字を配置したいと思います。 1.923328437452 -> 1.923 印刷ではなく、別の関数に文字列として出力する必要があります。 また、失われた数字を無視するのではなく、丸めます。

7
C#で文字列を浮動小数点数に変換する
「41.00027357629127」のような文字列を変換していて、使用しています。 Convert.ToSingle("41.00027357629127"); または float.Parse("41.00027357629127"); これらのメソッドは4.10002732E + 15を返します。 フロートに変換すると、「41.00027357629127」が必要になります。この文字列は同じでなければなりません...

6
SSEスカラーsqrt(x)がrsqrt(x)* xより遅いのはなぜですか?
私はIntel Core Duoでいくつかのコア計算をプロファイリングしており、平方根へのさまざまなアプローチを検討しているときに、奇妙なことに気付きました:SSEスカラー演算を使用すると、逆平方根を取得して乗算する方が高速ですネイティブのsqrtオペコードを使用するよりも、sqrtを取得する方が便利です。 私はそれを次のようなループでテストしています: inline float TestSqrtFunction( float in ); void TestFunc() { #define ARRAYSIZE 4096 #define NUMITERS 16386 float flIn[ ARRAYSIZE ]; // filled with random numbers ( 0 .. 2^22 ) float flOut [ ARRAYSIZE ]; // filled with 0 to force fetch into L1 cache cyclecounter.Start(); for …

11
最も正確な結果を得るには、フロートをどの順序で追加する必要がありますか?
これは私が最近のインタビューで尋ねられた質問であり、知りたいです(私は実際には数値解析の理論を覚えていませんので、私を助けてください:) 浮動小数点数を累積する関数がある場合: std::accumulate(v.begin(), v.end(), 0.0); vでstd::vector<float>、たとえば、。 それらを蓄積する前にこれらの数値をソートする方が良いでしょうか? どの順序が最も正確な答えを与えるでしょうか? 数値を昇順で並べ替えると、実際には数値誤差が少なくなると思いますが、残念ながら自分では証明できません。 PS私はこれがおそらく実世界のプログラミングとは何の関係もないことに気づき、好奇心旺盛なだけだと思います。

8
浮動小数点値の精度を維持するためのPrintf幅指定子
文字列をスキャンして戻すときに元の浮動小数点値が取得printfされるように、出力を必要な有効桁数に自動的にフォーマットする浮動小数点指定子に適用できる幅指定子はありますか? たとえば、floataを2小数点以下の精度で出力するとします。 float foobar = 0.9375; printf("%.2f", foobar); // prints out 0.94 出力をスキャンするとき0.94、元の0.9375浮動小数点値が返されることを保証する標準準拠の保証はありません(この例では、おそらくそうしません)。 に渡された元の値にスキャンして戻すことができるようにprintf、浮動小数点値を必要な有効桁数に自動的に出力する方法を教えてくださいprintf。 に渡す最大幅float.hを導出するためにいくつかのマクロを使用することができますprintfが、必要な有効桁数、または少なくとも最大幅に自動的に出力する指定子はすでにありますか?

10
数字の後の「f」
何をf数字が示した後?これはCまたはObjective-Cのどちらですか?これを定数に追加しないことで違いはありますか? CGRect frame = CGRectMake(0.0f, 0.0f, 320.0f, 50.0f); なぜ私が書けないのか説明してもらえますか? CGRect frame = CGRectMake(0, 0, 320, 50);

4
Javaのフロートとは何ですか?
私はこのコードを書きました: float b = 3.6; そして私はこれを手に入れます: エラー:未解決のコンパイル問題: タイプの不一致:doubleからfloatに変換できません どうして?の定義はfloat何ですか?

3
RustでQuakeの高速InvSqrt()関数を書くことは可能ですか?
これは私自身の好奇心を満たすためです。 これの実装はありますか: float InvSqrt (float x) { float xhalf = 0.5f*x; int i = *(int*)&x; i = 0x5f3759df - (i>>1); x = *(float*)&i; x = x*(1.5f - xhalf*x*x); return x; } ルストで?存在する場合は、コードを投稿してください。 私はそれを試して失敗しました。整数形式を使用して浮動小数点数をエンコードする方法がわかりません。これが私の試みです: fn main() { println!("Hello, world!"); println!("sqrt1: {}, ",sqrt2(100f64)); } fn sqrt1(x: f64) -> f64 { x.sqrt() } …

19
Swiftで文字列をFloatに変換する
私は、UITextFieldから取得した数値を変換しようとしていますが、実際には文字列であり、Floatに変換しているため、乗算することができます。 UITextfield次のように宣言されている2つのがあります。 @IBOutlet var wage: UITextField @IBOutlet var hour: UITextField ユーザーがUIButtonを押すと、ユーザーが稼ぐ賃金を計算したいのですが、使用する前にまずフロートに変換する必要があるため、計算できません。 私はこれを行うことによってそれらを整数に変換する方法を知っています: var wageConversion:Int = 0 wageConversion = wage.text.toInt()! しかし、それらを浮動小数点数に変換する方法がわかりません。

11
最新のハードウェアでの浮動小数点と整数の計算
私はC ++でパフォーマンスが重要な作業を行っており、現在「本質的に浮動小数点」である問題のために「より速い」ため、整数計算を使用しています。これは多くの迷惑な問題を引き起こし、多くの迷惑なコードを追加します。 浮動小数点の計算が386日ほどで非常に遅くなったことを読んだことを覚えています(IIRC)が、オプションのコプロセッサーがあったと思います。しかし、今日では指数関数的に複雑で強力なCPUを使用しているため、浮動小数点や整数の計算を行っても、「速度」に違いはありませんか?特に、実際の計算時間は、パイプラインのストールを引き起こしたり、メインメモリから何かをフェッチしたりするのに比べて短いのですか? 正しい答えはターゲットハードウェアでベンチマークすることですが、これをテストするための良い方法は何でしょうか?2つの小さなC ++プログラムを作成して、その実行時間とLinuxの「時間」を比較しましたが、実際の実行時間は変動しすぎます(仮想サーバーで実行しているのに役立ちません)。終日何百ものベンチマークの実行、グラフの作成などに費やすのではなく、相対速度の妥当なテストを行うために何かできることはありますか?アイデアや考えはありますか?私は完全に間違っていますか? 私が使用したプログラムは次のとおりですが、まったく同じではありません。 #include <iostream> #include <cmath> #include <cstdlib> #include <time.h> int main( int argc, char** argv ) { int accum = 0; srand( time( NULL ) ); for( unsigned int i = 0; i < 100000000; ++i ) { accum += rand( ) % 365; } …

9
浮動小数点値が0に等しいかどうかをチェックしても安全ですか?
通常、double型またはdecimal型の値の等価性に依存することはできませんが、0が特殊な場合かどうか疑問に思っています。 0.00000000000001と0.00000000000002の間の不正確さは理解できますが、0は何もないため、混乱するのはかなり難しいようです。何も不正確だとしたら、それはもはや何もありません。 しかし、私はこのトピックについてあまり知らないので、私が言うことはできません。 double x = 0.0; return (x == 0.0) ? true : false; それは常にtrueを返しますか?

14
標準のjsonモジュールで浮動小数点をフォーマットする
フロートのリストをシリアル化するために、Python 2.6の標準のjsonモジュールを使用しています。しかし、私はこのような結果を得ています: >>> import json >>> json.dumps([23.67, 23.97, 23.87]) '[23.670000000000002, 23.969999999999999, 23.870000000000001]' 浮動小数点数を2桁の10進数のみでフォーマットする必要があります。出力は次のようになります。 >>> json.dumps([23.67, 23.97, 23.87]) '[23.67, 23.97, 23.87]' 私は自分のJSON Encoderクラスを定義しようとしました: class MyEncoder(json.JSONEncoder): def encode(self, obj): if isinstance(obj, float): return format(obj, '.2f') return json.JSONEncoder.encode(self, obj) これは、単一のフロートオブジェクトに対して機能します。 >>> json.dumps(23.67, cls=MyEncoder) '23.67' しかし、ネストされたオブジェクトでは失敗します: >>> json.dumps([23.67, 23.97, 23.87]) '[23.670000000000002, 23.969999999999999, 23.870000000000001]' 私は外部依存関係を持ちたくないので、標準のjsonモジュールを使い続けることを好みます。 …

7
C ++警告:ゼロによるdoubleの除算
ケース1: #include <iostream> int main() { double d = 15.50; std::cout<<(d/0.0)<<std::endl; } 警告なしでコンパイルして出力しinfます。OK、C ++はゼロによる除算を処理できます(ライブでご覧ください)。 だが、 ケース2: #include <iostream> int main() { double d = 15.50; std::cout<<(d/0)<<std::endl; } コンパイラーは次の警告を出します(ライブで確認してください): warning: division by zero [-Wdiv-by-zero] std::cout<<(d/0)<<std::endl; 2番目のケースでコンパイラが警告を出すのはなぜですか? ですか0 != 0.0? 編集: #include <iostream> int main() { if(0 == 0.0) std::cout<<"Same"<<std::endl; else std::cout<<"Not …

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