C ++ Kitaplığı - <sınırlar>
Giriş
Bu bir Sayısal limit türüdür ve kütüphanenin derlediği belirli platformdaki aritmetik türlerin (integral veya kayan nokta) özellikleri hakkında bilgi sağlar.
Beyanname
Aşağıda std :: numeric_limits için bildirim verilmiştir.
template <class T> numeric_limits;
C ++ 11
template <class T> numeric_limits;
Parametreler
T - Bir tür sınıftır.
Misal
Aşağıdaki örnekte std :: numeric_limits için.
#include <limits>
#include <iostream>
int main() {
std::cout << "type\tlowest type\thighest type\n";
std::cout << "int\t"
<< std::numeric_limits<int>::lowest() << '\t'
<< std::numeric_limits<int>::max() << '\n';
std::cout << "float\t"
<< std::numeric_limits<float>::lowest() << '\t'
<< std::numeric_limits<float>::max() << '\n';
std::cout << "double\t"
<< std::numeric_limits<double>::lowest() << '\t'
<< std::numeric_limits<double>::max() << '\n';
}
Örnek çıktı şu şekilde olmalıdır -
type lowest type highest type
int -2147483648 2147483647
float -3.40282e+38 3.40282e+38
double -1.79769e+308 1.79769e+308
Şablon örnekleri
C ++ 98'in temel aritmetik türleri şöyle olmalıdır -
temel aritmetik türler | |
---|---|
integral türleri | bool |
char |
|
wchar_t |
|
signed char |
|
short int |
|
int |
|
long int |
|
unsigned char |
|
unsigned short int |
|
unsigned int |
|
unsigned long int |
|
kayan nokta türleri | float |
double |
|
long double |
C ++ 11'in temel aritmetik türleri şöyle olmalıdır -
temel aritmetik türler | |
---|---|
integral türleri | bool |
char |
|
char16_t |
|
char32_t |
|
wchar_t |
|
signed char |
|
short int |
|
int |
|
long int |
|
long long int |
|
unsigned char |
|
unsigned short int |
|
unsigned int |
|
unsigned long int |
|
unsigned long long int |
|
kayan nokta türleri | float |
double |
|
long double |
Üyeler
üye | tip | Emlak |
---|---|---|
is_specialized | bool |
Herkes true içindir (yani,sayısal_sınırlaruzmanlaşmıştır). ve false diğer tüm türler için. |
dk () | T | Minimum sonlu bir değerdir. Normalize olmayan kayan tipler için (değişken sayıda üs biti): minimum pozitif normalleştirilmiş değer. Eşittir ÇEKİCİ, SCHAR_MIN, SHRT_MIN, INT_MIN, LONG_MIN, LLONG_MIN, FLT_MIN, BL_MIN, LDBL_MINveya |
max () | T | Maksimum sonlu bir değerdir. Eşittir CHAR_MAX, SCHAR_MAX, UCHAR_MAX, SHRT_MAX, USHRT_MAX, INT_MAX, UINT_MAX, LONG_MAX, ULONG_MAX, LLONG_MAX, ULLONG_MAX, UINT_LEAST16_MAX, UINT_LEAST32_MAX, FLT_MAX, DBL_MAX veya LDBL_MAXtürüne bağlı olarak. |
en düşük() | T | Minimum sonlu bir değerdir. (C ++ 11'den beri) İntegral türleri için: aynı dk (). Kayan nokta türleri için: uygulamaya bağlı; genellikle olumsuzmax (). |
rakamlar | int | Tamsayı türleri içindir: gösterimdeki işaretsiz bitlerin sayısı ( taban tabanı basamakları). Kayan türler için: mantisteki basamak sayısı ( taban tabanında) (eşdeğerFLT_MANT_DIG, DBL_MANT_DIG veya LDBL_MANT_DIG). |
rakamlar10 | int |
Değişiklik yapılmadan gösterilebilen (ondalık tabanda) bir sayıdır. Eşittir FLT_DIG, DBL_DIG veya LDBL_DIG yüzer tipler için. |
max_digits10 | int |
Farklı değerlerin her zaman farklı olmasını sağlamak için gerekli olan (ondalık tabanda) bir dizi basamaktır. |
is_signed | bool |
true tip imzalanmışsa. |
is_integer | bool |
true tür tamsayı ise. |
is_exact | bool |
true tür tam gösterimleri kullanıyorsa. |
kök | int |
Tam sayı türleri içindir: temsilin tabanı. Kayan türler için: temsilin üssünün tabanı (eşdeğer FLT_RADIX). |
epsilon() | T | Bu bir makine epsilon'dur (1 ile 1'den büyük olan en küçük değer arasındaki fark gösterilebilir). Eşittir FLT_EPSILON, DBL_EPSILON veya LDBL_EPSILON yüzer tipler için. |
round_error () | T | Maksimum yuvarlama hatasını ölçer. |
min_exponent | int |
Bu, normalleştirilmiş bir kayan noktalı sayı oluşturmak için yükseltilen tabanda bir minimum negatif tamsayı değeridir Eşittir FLT_MIN_EXP, DBL_MIN_EXP veya LDBL_MIN_EXP yüzer tipler için. |
min_exponent10 | int |
Bu, o güce yükseltilen 10'un normalleştirilmiş bir kayan nokta sayısı oluşturacağı şekilde minimum bir negatif tamsayı değeridir. Eşittir FLT_MIN_10_EXP, DBL_MIN_10_EXP veya LDBL_MIN_10_EXP yüzer tipler için. |
max_exponent | int |
Radix'in Eşittir FLT_MAX_EXP, DBL_MAX_EXP veya LDBL_MAX_EXP yüzer tipler için. |
max_exponent10 | int |
Bu güce yükseltilen 10'un normalize edilmiş sonlu bir kayan noktalı sayı oluşturduğu bir maksimum tamsayı değeridir. Eşittir FLT_MAX_10_EXP, DBL_MAX_10_EXP veya LDBL_MAX_10_EXP yüzer tipler için. |
has_infinity | bool |
true türün pozitif sonsuzluk için bir temsili varsa. |
has_quiet_NaN | bool |
true tip, sessiz (sinyal vermeyen) "Not-a-Number" için bir gösterime sahipse. |
has_signaling_NaN | bool |
true tipin bir "Not-a-Number" sinyali için bir temsili varsa. |
has_denorm | float_denorm_style | Bu normal olmayan bir değerdir (değişken sayıda üslü bit içeren temsiller). Bir tür aşağıdaki enum değerlerinden herhangi birine sahip olabilir - denorm_absent, normal olmayan değerlere izin vermiyorsa. denorm_present, normal olmayan değerlere izin veriyorsa. denorm_indeterminate, derleme zamanında belirsiz ise. |
has_denorm_loss | bool |
true eğer a doğruluğu kaybı bir denormalization kaybı yerine bir tam olmayan sonucu olarak tespit edilir. |
sonsuzluk() | T | Varsa , pozitif sonsuzluğu temsil eder . |
sessiz_NaN () | T | Varsa sessiz (sinyal vermeyen) "Not-a-Number" ı temsil eder . |
signaling_NaN () | T | Varsa "Not-a-Number" sinyalini temsil eder . |
denorm_min () | T | Minimum pozitif denormalize edilmiş değer. Normalize edilmemiş değerlere izin vermeyen türler içindir: ile aynı |
is_iec559 | bool |
IEC-559 tipinde her zaman has_infinity, has_quiet_NaN ve has_signaling_NaNayarlandı |
Sınırlı | bool |
true tür tarafından temsil edilen değerler kümesi sonluysa. |
is_modulo | bool |
true tür modulo ise. Bir türüdür modülo iki pozitif sayılar ekleyip bir sonuç olması mümkün olması durumunda daha az bir üçüncü numaraya sarar. |
tuzaklar | bool |
true tür için yakalama uygulanırsa. |
kalaysızlık_önce | bool |
true yuvarlamadan önce kalaylık tespit edilirse. |
round_style | float_round_style | Yuvarlama tarzıdır. Bir tür aşağıdaki enum değerlerinden herhangi birine sahip olabilir - round_toward_zero, sıfıra yuvarlanırsa. round_to_nearest, gösterilebilir en yakın değere yuvarlarsa. round_toward_infinitysonsuza doğru yuvarlanırsa. round_toward_neg_infinity, negatif sonsuza doğru yuvarlanırsa. round_indeterminate, yuvarlama stili derleme zamanında belirlenemezse. |
Temel aritmetik türler olmayan yukarıdaki tüm türler için varsayılan şablon tanımı kullanılır -
C ++ 98
template <class T> class numeric_limits {
public:
static const bool is_specialized = false;
static T min() throw();
static T max() throw();
static const int digits = 0;
static const int digits10 = 0;
static const bool is_signed = false;
static const bool is_integer = false;
static const bool is_exact = false;
static const int radix = 0;
static T epsilon() throw();
static T round_error() throw();
static const int min_exponent = 0;
static const int min_exponent10 = 0;
static const int max_exponent = 0;
static const int max_exponent10 = 0;
static const bool has_infinity = false;
static const bool has_quiet_NaN = false;
static const bool has_signaling_NaN = false;
static const float_denorm_style has_denorm = denorm_absent;
static const bool has_denorm_loss = false;
static T infinity() throw();
static T quiet_NaN() throw();
static T signaling_NaN() throw();
static T denorm_min() throw();
static const bool is_iec559 = false;
static const bool is_bounded = false;
static const bool is_modulo = false;
static const bool traps = false;
static const bool tinyness_before = false;
static const float_round_style round_style = round_toward_zero;
};
C ++ 11
template <class T> class numeric_limits {
public:
static constexpr bool is_specialized = false;
static constexpr T min() noexcept { return T(); }
static constexpr T max() noexcept { return T(); }
static constexpr T lowest() noexcept { return T(); }
static constexpr int digits = 0;
static constexpr int digits10 = 0;
static constexpr bool is_signed = false;
static constexpr bool is_integer = false;
static constexpr bool is_exact = false;
static constexpr int radix = 0;
static constexpr T epsilon() noexcept { return T(); }
static constexpr T round_error() noexcept { return T(); }
static constexpr int min_exponent = 0;
static constexpr int min_exponent10 = 0;
static constexpr int max_exponent = 0;
static constexpr int max_exponent10 = 0;
static constexpr bool has_infinity = false;
static constexpr bool has_quiet_NaN = false;
static constexpr bool has_signaling_NaN = false;
static constexpr float_denorm_style has_denorm = denorm_absent;
static constexpr bool has_denorm_loss = false;
static constexpr T infinity() noexcept { return T(); }
static constexpr T quiet_NaN() noexcept { return T(); }
static constexpr T signaling_NaN() noexcept { return T(); }
static constexpr T denorm_min() noexcept { return T(); }
static constexpr bool is_iec559 = false;
static constexpr bool is_bounded = false;
static constexpr bool is_modulo = false;
static constexpr bool traps = false;
static constexpr bool tinyness_before = false;
};