C++

2016-04-09 23 views
-3

'da güç işlevi kullanılırken uzun uzun tamsayı doğru bir şekilde yazdırma Doğru değeri nasıl yazdıracağınız açıklanabilir mi?C++

int main() { 
    std::cout << pow(2,53); 
} 
//output=9.0072e+15 
+0

hata yok, Bu, 'pow', 'double' veya' float 'döndürdüğü için, kayan noktalı sayılar için bilimsel gösterimdir. http://www.cplusplus.com/reference/ios/ios_base/fmtflags/ – oarfish

+0

Ya, ancak doğru sayıyı verimli bir şekilde nasıl yazdırabilirim? Bunu yapmam yolu: int main() { uzun uzun int k = pow (2,53); std :: cout << k; } Ancak bunu yapmak için daha verimli bir yolu var mı? –

+0

Bunu denemeden, yukarıdaki bağlantıdan 'cout.setf (std :: ios :: fixed) 'olduğunu tahmin ederdim. – oarfish

cevap

1

pow() parametrelerin yerine tamsayı olarak double sürer. Şans eseri, bu tam olarak unsigned long long ve 2 = (1 < < 53) tarafından temsil edilebilir.

nedenle, kullanabilirsiniz

std::cout << (1ULL << 53); 
+0

çok teşekkür ederim –

0

Eğer bit shift (< <) Eğer zorla 'uzun uzun' doğru türünü kullanabilirsiniz kullanmamayı isterseniz:

long long x = pow(2, 53); 
cout << x;