2013-03-23 84 views
0

如果輸入兩個足夠大的數字,整數將限制我對-2147483648的回答。我可以用替代我的代碼嗎?如果我這樣做,有沒有辦法讓它輸出答案的全長(而不是5e+17等)C++計算器中的整數限制

謝謝。

#include <iostream> 
using namespace std; 

int main() 
{ 
cout << "Enter two numbers: " << endl; 
int v1 = 0, v2 = 0; 
cin >> v1 >> v2; 
int sum = 0, val = v1; 

while (val <= v2) 
{ 
    sum += val; 
    ++ val; 
} 
cout << "The sum of " << v1 << " through " << v2 << " inclusive is " << sum << endl; 

return 0; 
} 

回答

3

您正在使用32位整數。你可以使用一個64位整數,int64_t。或者如果你需要更多的範圍,那麼使用一個具有任意精度的大整數類。

但我強烈建議你不要在整數計算中使用浮點運算。這隻會是不準確的。

0

我可以將double v1 = 0,v2 = 0替換成我的代碼嗎?

你可以,但是當你開始使用浮點數時會產生一些警告。小心他們。

是有辦法使它輸出的回答全長

你想要做一些iomanip

#include <iomanip> 

std::cout << std::setiosflags(std::ios::fixed) << std::setprecision(2) << val;