7

についての良い参考文献はありませんがstd::numeric_limits<T>、ネット上のサイトによると、std::numeric_limits<T>::epsilon()と の差を返し、1その後の最小の数値が返されます。タイプについて私が知る限りint、次の数値12であるため、イプシロンは である必要があります1。しかし、それは0(Linux、g++ 4.4.5) です。その背後にある理由は何ですか?

epsilon()実際には浮動小数点型にのみ役立つことを知っています。

4

2 に答える 2

8

標準は言う ([numeric.limits.members])

すべての浮動小数点型に意味があります。

標準には ([numeric.special]) とも記載されています

多くの値は、特定の条件下でのみ意味を持つ必要があります (たとえば、epsilon() は、is_integer が false の場合にのみ意味があります)。「意味がない」値は、0 または false に設定されます。

この値は「意味のある」ものではないため、意味のある値ではないことを示すために、標準では値 0 が必要です。

于 2012-09-05T09:13:46.153 に答える
2

数値が等しいと見なされる範囲を返し、範囲が 0 である必要がある整数型を返すと思います。

つまり、整数型と浮動小数点型の両方を処理できる汎用関数を作成している場合、整数の範囲を 0 にする必要があります。

于 2012-09-05T09:14:05.763 に答える