std::numeric_limits::epsilon
提供:cppreference.com
< cpp | types | numeric limits
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
| static T epsilon() |
(C + + 11時まで) | |
| static constexpr T epsilon() |
(C + + 11以来) | |
マシンイプシロン、つまり、浮動小数点型の1.0によって
Tと次の値が表現可能な差を返します。 std::numeric_limits<T>::is_integer == false場合にのみ意味を持つ.Original:
Returns the machine epsilon, that is, the difference between 1.0 and the next value representable by the floating-point type
T. It is only meaningful if std::numeric_limits<T>::is_integer == false.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
目次 |
[編集] 値を返します
T
|
std::numeric_limits<T>::epsilon() |
| /* non-specialized */ | T();
|
| bool | false |
| char | 0 |
| signed char | 0 |
| unsigned char | 0 |
| wchar_t | 0 |
| char16_t | 0 |
| char32_t | 0 |
| short | 0 |
| unsigned short | 0 |
| int | 0 |
| unsigned int | 0 |
| long | 0 |
| unsigned long | 0 |
| long long | 0 |
| unsigned long long | 0 |
| float | FLT_EPSILON |
| double | DBL_EPSILON |
| long double | LDBL_EPSILON |
[編集] 例外
[編集] 例
浮動小数点値を比較するための計算機イプシロンの安易な使用方法を示しています.
Original:
Demonstrates the simplistic use of machine epsilon to compare floating-point values.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
#include <cmath> #include <limits> #include <iomanip> #include <iostream> #include <type_traits> template<class T> typename std::enable_if<!std::numeric_limits<T>::is_integer, bool>::type almost_equal(T x, T y, int ulp) { // the machine epsilon has to be scaled to the magnitude of the larger value // and multiplied by the desired precision in ULPs (units in the last place) return std::abs(x-y) <= std::numeric_limits<T>::epsilon() * std::max(std::abs(x), std::abs(y)) * ulp; } int main() { double d1 = 0.2; double d2 = 1 / std::sqrt(5) / std::sqrt(5); if(d1 == d2) std::cout << "d1 == d2\n"; else std::cout << "d1 != d2\n"; if(almost_equal(d1, d2, 2)) std::cout << "d1 almost equals d2\n"; else std::cout << "d1 does not almost equal d2\n"; }
Output:
d1 != d2 d1 almost equals d2
[編集] も参照してください
| (C++11) (C++11) |
与えられた値に向かって次の表現可能な浮動小数点値 Original: next representable floating point value towards the given value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (機能) |