2012-09-07 120 views
-1

我有一個計劃,需要存儲多個號碼。最大的可以是10^15的訂單。我應該如何去存儲號碼。數據類型存儲大量

我使用GCC 4.3.2編譯器。

+4

什麼樣的數字 - 整型,實數近似,確切的分數......? – leftaroundabout

回答

7

long long將適合10^15,因爲它是64位。

要查看所有數據類型的限制值,可以使用<limits>標頭。

#include <iostream> 
#include <limits>  

int main() { 
    //print maximum of various types 
    std::cout << "Maximum values :\n"; 
    std::cout << "Short : " << std::numeric_limits<short>::max() << std::endl; 
    std::cout << "Int : " << std::numeric_limits<int>::max() << std::endl; 
    std::cout << "Long : " << std::numeric_limits<long>::max() << std::endl; 
    std::cout << "Long Long: " << std::numeric_limits<long long>::max() << std::endl; 
    std::cout << "Float : " << std::numeric_limits<float>::max() << std::endl; 
    std::cout << "Double : " << std::numeric_limits<double>::max() << std::endl; 

    //print minimum of various types 
    std::cout << "\n"; 
    std::cout << "Minimum Values: \n"; 
    std::cout << "Short : " << std::numeric_limits<short>::min() << std::endl; 
    std::cout << "Int : " << std::numeric_limits<int>::min() << std::endl; 
    std::cout << "Long : " << std::numeric_limits<long>::min() << std::endl; 
    std::cout << "Long Long: " << std::numeric_limits<long long>::min() << std::endl; 
    std::cout << "Float : " << std::numeric_limits<float>::min() << std::endl; 
    std::cout << "Double : " << std::numeric_limits<double>::min() << std::endl; 
} 

其輸出(在我的機器上):

Maximum values : 
Short : 32767 
Int : 2147483647 
Long : 2147483647 
Long Long: 9223372036854775807 
Float : 3.40282e+038 
Double : 1.79769e+308 

Minimum Values: 
Short : -32768 
Int : -2147483648 
Long : -2147483648 
Long Long: -9223372036854775808 
Float : 1.17549e-038 
Double : 2.22507e-308 
+0

更加明確,2^64〜10^19。您在「long long」中大致記錄(2^64)/ log(10)= 19位數字。 –

+0

@Rapptz是很久以前由GCC + 4.3.2編譯器支持的嗎? – Abhishek

+0

@Abhishek應爲[在這裏看到](http://ideone.com/h1bpP) – Rapptz