如何查看各個類型的最大值

來源:互聯網
上載者:User

問題源於同事的一個問題,VC編譯器裡如何查看double的最大值? 他在limits.h裡沒找到。

 

在limits.h裡面,只可以看到整型的最大值,但是看不到浮點數的最大值。浮點數的最大值可以這樣得到:

 

#include <iostream>

#include <limits>

 

using namespace std;

 

// compile with: /EHsc

 

 

int main(){

 

   cout << numeric_limits<double>::max() << endl;  

 

}

 

運行平台為VS2008,如果出現max編譯衝突,可以加上#undef max。

 

模板類numeric_limits的聲明是:

template <typename T>

numeric_limits<T>

 

// 變數和成員函數////    has_denorm//    has_denorm_loss//    has_infinity//    has_quiet_NaN//    has_signaling_NaN//    is_bounded//    is_exact//    is_iec559//    is_integer//    is_modulo//    is_signed//    is_specialized//    tinyness_before//    traps//    round_style//    digits//    digits10//    max_exponent//    max_exponent10//    min_exponent//    min_exponent10//    radix;//    denorm_min()//    epsilon()//    infinity()//    max()//    min()//    quiet_ NaN()//    round_error()//    signaling_NaN()//////////////////////////////////////////////////////////////////////
執行個體代碼:
#include <iostream>#include <limits>using namespace std;int main() {    cout << " 1 The minimum value for char is " <<        (int)numeric_limits<char>::min() << endl;    cout << " 2 The minimum value for int is  " <<        numeric_limits<int>::min() << endl;    cout << " 3 The maximum value for char is " <<        (int)numeric_limits<char>::max() << endl;    cout << " 4 The maximum value for int is  " <<        numeric_limits<int>::max() << endl;    cout << " 5 The number of bits to represent a char is " <<        numeric_limits<char>::digits << endl;    cout << " 6 The number of bits to represent an int is " <<        numeric_limits<int>::digits << endl;    cout <<" 7 The number of digits representable in base 10 for float is "         << numeric_limits<float>::digits10 << endl;    cout << " 8 Is a char signed?              " <<        numeric_limits<char>::is_signed << endl;    cout << " 9 Is an unsigned integer signed? " <<        numeric_limits<unsigned int>::is_signed << endl;    cout << "10 Is an integer an integer? " <<        numeric_limits<int>::is_integer << endl;    cout << "11 Is a float an integer?   " <<        numeric_limits<float>::is_integer << endl;    cout << "12 Is an integer exact? " <<        numeric_limits<int>::is_exact << endl;    cout << "13 Is a float exact?  " <<        numeric_limits<float>::is_exact << endl;    cout << "14 The radix for float is            "  <<        numeric_limits<float>::radix << endl;    cout << "15 The epsilon for float is          " <<        numeric_limits<float>::epsilon() << endl;    cout << "16 The round error for float is      " <<        numeric_limits<float>::round_error() << endl;    cout << "17 The minimum exponent for float is " <<        numeric_limits<float>::min_exponent << endl;    cout << "18 The minimum exponent in base 10   " <<        numeric_limits<float>::min_exponent10 << endl;    cout << "19 The maximum exponent is           " <<        numeric_limits<float>::max_exponent << endl;    cout << "20 The maximum exponent in base 10   " <<        numeric_limits<float>::max_exponent10 << endl;    cout << "21 Can float represent positive infinity?  " <<        numeric_limits<float>::has_infinity << endl;    cout << "22 Can double represent positive infinity? " <<        numeric_limits<double>::has_infinity << endl;    cout << "23 Can int represent positive infinity? " <<        numeric_limits<int>::has_infinity << endl;    cout << "24 Can float represent a NaN?           " <<        numeric_limits<float>::has_quiet_NaN << endl;    cout << "25 Can float represent a signaling NaN? " <<        numeric_limits<float>::has_signaling_NaN << endl;    cout << "26 Does float allow denormalized values?   " <<        numeric_limits<float>::has_denorm << endl;    cout << "27 Does float detect denormalization loss? " <<        numeric_limits<float>::has_denorm_loss << endl;    cout << "28 Representation of positive infinity for float " <<        numeric_limits<float>::infinity() << endl;    cout << "29 Representation of quiet NaN for float         " <<        numeric_limits<float>::quiet_NaN() << endl;    cout << "30 Minimum denormalized number for float         " <<        numeric_limits<float>::denorm_min() << endl;    cout << "31 Minimum positive denormalized value for float " <<        numeric_limits<float>::denorm_min() << endl;    cout << "32 Does float adhere to IEC 559 standard?  " <<        numeric_limits<float>::is_iec559 << endl;    cout << "33 Is float bounded? " <<        numeric_limits<float>::is_bounded << endl;    cout << "34 Is float modulo?  " <<        numeric_limits<float>::is_modulo << endl;    cout << "35 Is int modulo?    " <<        numeric_limits<float>::is_modulo << endl;    cout << "36 Is trapping implemented for float?    " <<        numeric_limits<float>::traps << endl;    cout << "37 Is tinyness detected before rounding? " <<        numeric_limits<float>::tinyness_before << endl;    cout << "38 What is the rounding style for float? " <<        (int)numeric_limits<float>::round_style << endl;    cout << "39 What is the rounding style for int? " <<        (int)numeric_limits<int>::round_style << endl;    cout << "40 How does a float represent a signaling NaN? " <<        numeric_limits<float>::signaling_NaN() << endl;    cout << "41 Is int specialized? " <<        numeric_limits<float>::is_specialized << endl;}

 

請運行相關的代碼查看結果。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.