問題タブ [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++ - コンパイラがカスタムの numeric_limits メンバー関数を認識しない
STLlimits
を使用して、与えている構造体の最小値、最大値、および無限大(これらのみだと思います)の値を決定するデータ構造を使用しています。このような実装固有の詳細がある場合、私は Visual C++ 2010 を使用しています。
PseudoTuple::ReturnWrapper
制限のサポートが必要なタイプである、私のデータ型の基本構造は次のとおりです。
numeric_limits
コピー アンド ペーストの力を借りて、必要と思われる 3 つの機能のみを実装する小さなクラスを作成しました。戻り値は現在のところ一時的なもので、これがコンパイルされるかどうかを確認するためのものです。
そして、これらの宣言を確実に取得できるように、この後にヘッダーを含めます。ここでエラーが発生します:
coordinate_type
の typedef ですPseudoTuple::ReturnWrapper
。エラーは次のとおりです。
また、 と のすべての使用でこの興味深い警告が表示されますmin
。max
これはエラーと同じ行にあります。
このデータ構造をstd::array
ofstd::string
で使用すると、これらの警告は表示されますが、コンパイラ エラーは表示されません。その場合も適切に動作するため、全体が何らかの形で機能する必要があります。max
しかし、私のカスタムを使用すると、関数が認識されませんnumeric_limits
。
を に変更するmax()
とinfinity()
、正常にコンパイルされ、 でエラーがスローされmin()
ます。名前min
とmax
はそれにいくらかの悲しみを与えていますが、その理由はわかりません. infinity
ただし、これは、の実装からメソッドを取得できることを示してnumeric_limits
います。
編集: 適切な型が渡されていることを示すデータ構造コードを削除しましたが、無関係のようです。
編集 2: マーク B は問題を解決しましたが、新しい問題が発生しました:
error LNK2019: unresolved external symbol "__declspec(dllimport) public: static struct PseudoTuple::ReturnWrapper __cdecl std::numeric_limits<struct PseudoTuple::ReturnWrapper>::max(void)" (__imp_?max@?$numeric_limits@UReturnWrapper@PseudoTuple@@@std@@SA?AUReturnWrapper@PseudoTuple@@XZ) referenced in function "public: static struct PseudoTuple::ReturnWrapper const __cdecl kd_v1_0_8::spatial::detail::coordinate_limits_impl<struct PseudoTuple::ReturnWrapper,1,0>::highest(void)" (?highest@?$coordinate_limits_impl@UReturnWrapper@PseudoTuple@@$00$0A@@detail@spatial@kd_v1_0_8@@SA?BUReturnWrapper@PseudoTuple@@XZ)
そのため、何かがリンクを台無しにしています... については同じですmin
が、については取得していませんinfinity
。
api - OpenStreetMap API 0.6 の数値制限はどこにありますか?
OpenStreetMap API 0.6 を使用しようとしています。API は簡単ですが、ドキュメントから数値範囲制限に関する情報を見つけることができませんでした。
私が見つけた数値範囲の制限についての言及はここだけです。
- 要素 ID は負ではありません。http://wiki.openstreetmap.org/wiki/OSM_XML
- ID は整数、http://wiki.openstreetmap.org/wiki/Data_Primitives
私のコードはモバイル プラットフォームを対象としているため、コードをメモリ空間用に最適化したいと考えています。現在、多くのケースで 64 ビット整数を使用しています (実際にはこれも単なる仮定です)。これは、データの量を考慮すると良くありません。
数値制限はどこで確認できますか?
c++ - float / doubleの乱数の範囲が狭く、整数型に適しています(C ++、VS2010)
タイプに基づいた乱数の作成にVS2010のテンプレートを使用しようとしています。私は以下のコードを使用しています:
残念ながら、char
//など(整数型)のBaseTypeRandomizerのオブジェクトを作成すると、範囲全体をカバーする数値が返されますが、floatとdoubleの場合は返されません。フロートはすべてとの間にあり、ダブルはとの間にあります(または少なくともすべてがその近隣にあります)。VSデバッガーでオブジェクトをチェックすると、制限が正しいことがわかりますが、ベクトルははるかに狭い範囲の数値で埋められます。int
long
1e+37
9e+38
1e+307
2e+308
dist
Values
制限が正しく機能しない理由を誰かが知っていますか?
c++ - std::numeric_limits::is_exact ... 使用可能な定義は何ですか?
私が解釈すると、MSDN の定義はnumeric_limits::is_exact
ほとんどの場合誤りです。
[this] 型で実行される [all] 計算には、丸め誤差がありません。
そして、IBM の定義はほぼ常に真です: (または、読み方によっては循環的な定義です)
すべての値の正確な表現を持つ型
私が確信しているのは、 aと a の2
両方に aを格納でき、両方とも正確に表現されるということです。 double
long
次に、それらを両方で割ることができますが10
、どちらも数学的な結果を正確に保持しません。
数値データ型が与えられた場合T
、定義する正しい方法は何std::numeric_limits<T>::is_exact
ですか?
編集:多くの回答で提供された詳細から、この質問 に対する正確な回答だと思うものを投稿しました。この回答は、報奨金の候補ではありません。
c++ - std::is_signed の違いおよび std::numeric_limits::is_signed?
std::is_signed<T>
との両方std::numeric_limits<T>::is_signed
が の符号性に関する答えを与えることになっていますT
。署名の指標が2 つ
になったのはなぜですか(つまり、C++11 以降)?
floating-point - 倍精度浮動小数点形式の最大指数と最小指数
IEEE Std 754-2008標準によると、binary64 倍精度浮動小数点形式の指数フィールド幅は 11 ビットであり、これは 1023 の指数バイアスによって補正されます。標準では、最大指数が 1023 であることも指定されています。最小値は -1022 です。最大指数がそうでない理由:
そして最小指数は:
c++ - C ++の整数型の正と負の無限大
C ++の正と負の無限大について読んでいます。
整数型には無限の値がないことを読みました。std::numeric_limits<int>::infinity();
機能しstd::numeric_limits<int>::max();
ませんが、機能し、整数型で表現できる最大値を表します。
したがって、std::numeric_limits<int>::max();
整数型の はそのpositive infinite limit
?
または、整数型には のみがmax value
あり、infinity value
は真ではありませんか?
c++ - int min の固定小数点実装
私はC ++の正と負の無限大について読んでおり、それらを固定小数点演算の実装で実装しようとしています
int の最大値がstd::numeric_limits<int>::max();
c++で等しいことがわかります
std::numeric_limits<int>::min();
int の最小値はc++と等しくなります
ここで、固定小数点演算の実装で int max と int min を手動で定義しているので、疑いはあり ますint min = -int max;
かint min = -int max -1;
?
誰かクリアできる?
c++ - numeric_limits::min が int に対して負の値を返し、float/double に対して正の値を返すのはなぜですか?
numeric_limits::min が int に対して負の値を返すのに、float や double などに対して正の値を返すのはなぜですか?
出力:
cppreference から:
数値型 T で表現可能な最小の有限値を返します。
非正規化を伴う浮動小数点型の場合、min は正規化された正の最小値を返します。この動作は、特に整数型の min の動作と比較すると、予想外の場合があることに注意してください。それより小さい値がない値を見つけるには、 を使用します
numeric_limits::lowest
。min は、制限付きの型と制限なしの符号なし型の場合にのみ意味があります。つまり、負の値の無限のセットを表す型には、意味のある最小値がありません。