問題タブ [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++ - float 変数が float の制限を超えるとどうなりますか?
私は2つのことを指摘しました:
std::numeric_limits<float>::max()+(a small number)
与えます:std::numeric_limits<float>::max()
.std::numeric_limits<float>::max()+(a large number
のように:情報std::numeric_limits<float>::max()/3)
を提供します。
この違いはなぜですか?1 または 2 は OVERFLOW になり、未定義の動作になりますか?
編集:これをテストするためのコード:
1.
2.
c++11 - C++ 11、範囲によって決定される整数型?
したがって、この質問が出てきました。かなり単純なコーディングを行いながら、次のことを検討してください。
上記のコードは、'sizeof(unsigned int) >= 4' を想定して期待どおりに動作しますが、一部のプラットフォームではこれが当てはまらない場合があるため、これに似たものに興味があります。
'RangeInt' はテンプレートで、'type' は MINIMUM (0x00000000) から MAXIMUM (0xFFFFFFFF) までの値の範囲を保持するのに十分な大きさの最小の整数型です。
したがって、問題は単純です。
- これは標準ライブラリのどこかに実装されていますか?
- そうでない場合、これを実装するライブラリはありますか、または std::numeric_limits に基づいて独自に構築する必要がありますか
c++ - boost::graph カスタム ウェイト タイプ: numeric_limits は必要ですか?
ブースト グラフにカスタム エッジ プロパティ ( MyWeight
) があり、ダイクストラ最短パス検索を適用したいと考えています。
私の重みのタイプは、boost::operators の助けを借りて、加算可能、減算可能、比較可能未満、比較可能です。
検索は何かから始めなければならないことを知っているので、ゼロに相当するものが必要であり、ノードが到達可能かどうかを調べるには、非常に大きな何かが必要です。
これが私がカスタムウェイトを使用する原則です。gcc 4.8.1 ではコンパイルされますが (正しく動作するようです)、gcc 4.7.3 では次のエラーが発生します (少し短縮されています)。
(MyWeight
実際はテンプレートです)
私はこのメッセージを「あなたのタイプには std::numeric_limit がありません」と解釈しますが、一方、BGL にどの極値を使用するかを伝えますが、数値制限を呼び出そうとする理由がわかりません。numeric_limits
ここで試す最善の方法は、カスタム データ型を認識させることだと思います。
誰かがそれを達成する方法を教えてもらえますか?
ここで最初のヒントを見つけましたが、この例ではdigits
andのようなメンバーを使用しdigits10
ており、それらがどこから来たのか知りたいです。
編集
これは私のような例です。コンパイルできません。エラーについては上記を参照してください。
c++ - boost::multiprecision::cpp_dec_float_50 オーバーフロー チェック
浮動 (またはその場合は固定) 小数点演算に boost::multiprecision ライブラリを使用しようとしています。ただし、次の方法で潜在的なオーバーフローを検出するのに問題があります。
タイプの max() に 1 を追加しても、例外のスローがトリガーされませんか? オーバーフロー後に基になる型も確認しましたが、cpp_dec_float_inf ではなく、cpp_dec_float_finite のままです。また、dtNew の値は std::numeric_limits::max() と同じです
ここで私は完全に概念的な誤解を受けていますか? もしそうなら、boost::multiprecision::cpp_dec_float<50> のオーバーフローを防ぐ正しい方法は何でしょうか?
c++ - C++ クラス std::numeric_limits のフィールドとメソッド
なぜ、std::numeric_limits
C++ のテンプレート クラスではdigits
(およびその他) がクラスの (static const) フィールドとして定義されているのに、min()
およびmax()
がメソッドであるのですか。これらのメソッドはリテラル値を返すだけなので?
前もって感謝します。
c++ - 負の無限大
float または double 変数に負の無限大の値を代入する方法を理解しようとしています。標準ライブラリの制限を含めて、無限表現を取得できるようです。その前にマイナス (-infinity) を追加すると、IEEE754 浮動小数点で探している値になる可能性があることを (かなり確実に) 知っています。標準 (0x7FFFFFFF は 0xFFFFFFFF になる可能性があるため) ですが、それについてはよくわかりません。私はそれが本当に専門的ではなく、実装に依存していると思います。
もちろん、負の無限大プラットフォームと実装の値を個別に取得する良い方法はありますか?それ以外の場合は、#define を使用することもできます。
c++ - numeric_limits または C limit マクロを使用する必要がありますか?
私は SO が初めてで、これが私の最初の質問ですが、ルールを読みました。ルールを破らないことを願っています。
私は最近プログラミングを学び始め、最初の言語として C++ を選びました。今日、私は適切な決定を下すために助けが必要なところまで来ました。私は C++ Primer Plus の第 6 版から学習していますが、これまでのところ著者は C マクロを紹介しただけで、 numeric_limitsテンプレート (少なくとも私はそれがテンプレートだと思います) について一言も言っていません。私の好奇心。
したがって、今は少し迷っています。正しく理解していれば、numeric_limitsは簡単に拡張できるため、C++ 型の制限をチェックするための最新の方法だからです。さらに、C マクロの中には、char16_t のような C++11 型の定義がありません。
私が見つけたのはその質問だけですが、役立つ回答を提供してくれましたが、残念ながら、私にとって特に興味深いものには回答していません。また、彼らは実際にはかなり古いものです。
さて、具体的な質問:
将来のコード実行速度、安全性、および有用性のニーズに基づいて (シンプルさはあまり気にしません)、これらの古い C マクロを使用する方が良い考えですか?
私の英語の間違いを許してください。それは私の母国語ではありません。
c++ - max_digits10 の目的と、digits10 との違いは何ですか?
何max_digits10
を表しているのか迷っています。そのドキュメントによると、すべての整数型で 0 です。の浮動小数点型の式は、 の式に似max_digits10
ています。int
digits10