問題タブ [numeric-limits]
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++ - cstdint typedefs は、std::numeric_limits が特化されていない実装固有の型にバインドできますか?
少なくとも理論的には、cstdint typedefs が std::numeric_limits が特化されていない実装固有の型にバインドされる可能性はありますか?
http://www.cplusplus.com/reference/limits/numeric_limitsによると、「[std::numeric_limits] はすべての基本的な算術型に特化されており、そのメンバーは型 T のプロパティを記述しています。このテンプレートは、他のタイプに特化する必要があります。」
http://en.cppreference.com/w/cpp/types/numeric_limitsによると、もう一度引用させてください、「実装は、実装固有の型に対して std::numeric_limits の特殊化を提供することがあります」。
「5月」、cppreferenceは言います。だから彼らはする必要はありません。
そして最後に、http: //www.cplusplus.com/reference/cstdint によると、ヘッダーで定義されている typedef は「基本的な整数型または拡張整数型の typedef です」。
要約すると、 cstdint typedefsは基本的な整数型ではない拡張整数型(それらが何であれ) にバインドされる可能性があるため、 std::numeric_limits と互換性がない可能性があります。これは正しいです?
ただし、私がリンクしたドキュメントは、ある点で少し矛盾しているようです。std::numeric_limits が実装固有の型に特化されている可能性があるという cppreference の許容に反して、std::numeric_limits を非基本的な算術型に特化してはならないという cplusplus.com の禁止事項ではありませんか? もちろん、これらの実装固有の型が実際には 基本的な整数型でない限り、うまくいけば、std::numeric_limits はすべての cstdint typedef に特化する必要があります。
ドキュメントは私を混乱させます。だから私はここで私の質問をします:)
編集。
http://eel.is/c++draft/cstdintによると、cstdint は整数型にバインドする必要があります。http://eel.is/c++draft/limits.numericによると、「bool を含む、浮動小数点と整数の両方の算術型ごとに特殊化を提供する必要があります」。整数型は算術型であるため、std::numeric_limits を cstdint typedefs に特化する必要があるという理解は正しいですか?
c++ - numeric_limits と比較する方法::分()
符号 (+1
または-1
) が既知であり、符号なし整数を解析するコードがあると考えてください。その符号なし整数は と等しくなる可能性があります-numeric_limits<int64_t>::max()
。未定義の動作をトリガーせずに正しく比較するには?
c++ - テンプレート クラスの numeric_limits max 関数の定義
テンプレート クラスの関数 max の定義に問題があります。このクラスでは、数値を単純な整数としてではなく、いくつかの数値システムの数値のベクトルとして保持しました。また、numeric_limits を定義すると、定義された数値システムに基づく最大数の表現を返す必要があります。
そして、最大表現でクラスを返そうとすると多くのエラーが発生しますが、整数を返すと機能します。
私のテンプレートクラス:
.h ファイルの最後に、次のものがあります。
これを const と constexpr で試しましたが、うまくいきません。このエラーを取り除く方法がわかりません:
そして、これは私がメインでやろうとしていることです:
これは私の課題なので、これを行う方法を判断しないでください。これは私の教師の選択であり、問題をかなり包括的に提示したことを願っています.
c++ - C++でconst intを最大に設定するには?
static const メンバーがあり、それを最大整数に設定したいと考えています。私は次のことを試しています:
しかし、次のエラーが発生します。
エラー: 静的データ メンバーのクラス内初期化子が定数式ではありません
これに対する解決策はありますか?関数が定数式を返さないのはどうしてですか?
編集: -std=c++11 を追加すると、問題が修正されました。私のルームメイトは、コンパイラ (C++11 より前) は、 std::numeric_limits::max() が他のものを変更しないと判断できるほど賢くないため、定数とは見なされないことを教えてくれました。それがおそらくこのエラーの理由ですか?
c++ - 物理計算における無限大の表現
現在、C++ でエラスティック コリジョンを処理する関数をいくつか作成しています。動かない物体に衝突する動く物体を扱うとき、つまずきにぶつかりました。これは、計算上、動かない物体の質量が無限である必要があるためです。
提供していることは承知していstd::numeric_limits
ますinfinity()
が、私が知る限り、これは浮動小数点表現で可能な最大数にすぎないため、この場合に完全に役立つかどうかはわかりません。次のコードでは、 if aabb_obj
has mass equal to std::numeric_limits<double>::max()
it を使用するすべての計算の結果がstd::numeric_limits<double>::max()
またはになるよう0
です。
これはゲーム用であるため、結果が 100% 物理的に正確である必要はなく、「十分」である必要があります。そのような計算で無限を表すための推奨される方法は何ですか? 任意に高い数値を選択するだけですか?