問題タブ [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++ - 変数の制限を取得するエレガントな方法
変数をその制限の 1 つに設定するより良い方法はありますか?
特に初期化時
タイプが変更された場合、これを見逃すのは簡単なので、私は通常、そのような式でタイプを使用したくありません。
c++ - gdbのinfとは
C++ プログラムをデバッグしています。double 型の変数がありx
、gdb はその値を として出力しますinf
。それでも、次の式はの値が変わらなくfalse
ても戻りますx
x == std::numeric_limits<double>::max()
gdb が と言うときinf
、それはこの型 (double) の最大可能値を意味するのではないですか? そうでない場合、それはどういう意味ですか?
c++ - 浮動小数点数の整数部分の 10 進数の最大数は何ですか
浮動小数点型の整数部分の基数 10 の最大桁数を教えてくれるa#define
または何かのように、標準に何かがあるかどうかを知りたいです。numeric_limits
たとえば、最大値が 1234.567 の浮動小数点型があるとします。そのタイプの4を教えてくれる標準で定義されたものが欲しいです。
これを行うオプションはありますか?
c++ - 浮動小数点数の小数部分の 10 進数の最大数は何ですか
値の切り捨てがないように浮動小数点数を出力でき ( を使用setpercision
)、数値が固定表記で出力された場合 ( を使用fixed
)、浮動小数点数をバッファに格納できますか?
浮動小数点型の小数部分の最大の基数 10 の値の場所を教えてくれるa#define
または何かのようなものが標準にあることを願っています。numeric_limits
ここで、浮動小数点型の小数部分の基数 10 の最大桁数について尋ねました: 浮動小数点数の整数部分の基数 10 の最大数は何ですか
しかし、これはもっと複雑かもしれません。たとえば1.0 / 3.0
、無限に繰り返される一連の数字です。書式設定を使用して出力すると、fixed
0 を繰り返す前に次のように多くの場所が取得されます。
0.33333333333333314829616256247390992939472198486328125
しかし、それが最大の精度であるとは必ずしも言えません。浮動小数点の小数部で実際に表現された末尾の 0 の数がわからず、負の指数によってシフトダウンされていないためです。
私たちが持っていることは知っていますmin_exponent10
が、これを探す必要がありますか?
c++ - ゼロ値以外のビット単位で符号なし整数の最大値を取得する
のようなヘッダーを含めずに、特定の符号なし整数型の最大値を取得しようとしています<limits>
。そこで、符号なし整数値 0 のビットを単純に反転させようと考えました。
これらの微妙な違いについては、私はあまり経験がありません。そのため、最初の方法を使用すると、予期しない動作やプラットフォーム/アーキテクチャの問題が発生する可能性があるかどうかを尋ねています。
c++ - numeric_limit に無制限の制限を指定します::最大()?
Integer
JavaBigInteger
や OpenSSLによく似た任意精度のクラスがありBIGNUM
ます。の無制限の制限を表現する方法を理解するのに苦労していnumeric_limit<Integer>::max()
ます。
スタック オーバーフローには、実行してもよいかどうかを尋ねる質問がいくつかあります (ユーザー定義の数値のようなクラスに std::numeric_limits を特化するのは大丈夫ですか? など) 。任意精度の整数クラスを使用した例。std::numeric_limitsリファレンス ページにもアクセスしましたが、この状況で何をすべきかが明確ではありません。
この時点で、私の結論は、 my に特化numeric_limit
してInteger
も問題なく、標準の名前空間に配置しても問題ないということです。また、すべてを専門化する必要がありますnumeric_limits
。
に無制限の制限を指定するにはどうすればよいnumeric_limit<T>::max()
ですか?
以下は GCC 4.2.1 <limits>
(OS X マシン) のものです。
c++ - なぜ std::numeric_limits は::min() は、異なる関数で出力にストリーミングされると動作が異なりますか?
私は奇妙な振る舞いをしました
std::cout を呼び出すと、出力値 1.17549e-38 が得られます
対照的に、私が使用するとき
0.000000 の値を取得します。
std::numeric_limits<float>::min() == std::numeric_limits<float>::min()
( )を評価すると (true
直感的で論理的) が得られることに注意してください。
ですから、この出力の違いを説明できる人はいますか?
c++ - std::numeric_limits::is_integer が揮発性型で false になるのはなぜですか?
'false' と評価されます。
しかし、なぜ?volatile int はまだ整数型ではありませんか? これに何か深い意味があるのか知りたいです。
UPD: コンパイラは Keil 4.72 の armcc です
c++ - Apple Clang と numeric_limits::max() は 0 ですか?
numeric_limits<T>::max()
最大値ではなく 0を返す明らかなバグを回避する最善の方法を見つけようとしています。
まず、テスト プログラム:
このテストは、 128 ビット整数__SIZEOF_INT128__ >= 16
での GCC メーリング リストでの議論から生まれました- 無意味なドキュメント? .
そして結果:
Apple もプラットフォームとツールを放棄したため、バグ レポートでは問題が修正されません。
この問題を回避するにはどうすればよいですか?
どうすればよいかわかりません。コードの問題を修正するには、上記の最小限の例とは対照的に、名前空間で関数をオーバーライドする必要があります。std
ただし、関数のオーバーライドは許可されstd
ていません。
実際のコードで問題になる理由の例を次に示します。
上記のコードでは、考えられるすべての と の組み合わせに対して完全な特殊化を提供する必要がT1 = __int128
ありT2
ます。現実的ではありません。
問題のあるマシンのコンパイラのバージョン:
ただし、Apple 以外のテスト マシンにジャンプすると、期待どおりの結果が得られます。