C ++全程度

时间:2018-03-08 15:51:26

标签: c++

这是一个简单的代码,计算两个到正确的程度。从大约60度的某个地方开始,答案是不正确的。 我需要数2 ^ 200。答案不应该是“1.606938e + 60”之类的形式,而应该是数字。如何在C ++中执行此操作?

#include <iostream>

using namespace std;

int main()
{
  unsigned long long int n,z;
  cin>>n;
  z=pow(2,n);
  cout<<z<<endl;

  return 0;
}

2 个答案:

答案 0 :(得分:2)

您需要使用std::set_precision(n)以您期望的格式打印它,但如果您的数字足够高,您将遇到第二个问题。 pow返回一个double,它会大量丢失精度。有关如何解决此问题的更多信息,请参阅this Stack Overflow answer

答案 1 :(得分:1)

无论如何,你不能在c ++中打印如此大的数字作为单个整数或双值(尚未)。也许存在256或512个机器架构和实现,其中构建类型足够大,但它不可能是共同的。您可能需要使用一些数据结构来存储数字并对其进行操作 Thisthisthis示例可能会有所帮助。